{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 假定一个投资人在2008年9月25日持有价值为1000万美元的投资组合，组合有4个股票指数：\n",
    "# 美国DJIA、英国FTSE100、法国CAC40和日本Nikkei255\n",
    "# 采集2006/8/7至2008/9/25期间共501天4个指数的收盘价格的历史数据。\n",
    "# 注意2008年9月25日这个时间点。\n",
    "# 2007年8月开始的次贷危机已持续了1年，股票价格持续下跌了几个月，在这期间，波动率有所增大，\n",
    "# 雷曼兄弟在10天前申请破产，美国财政部的7000亿美元受困资产救助资金还没有在国会通过。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Day</th>\n",
       "      <th>DJIA</th>\n",
       "      <th>FTSE</th>\n",
       "      <th>CAC</th>\n",
       "      <th>Nikkei</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Date</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2006/8/7</th>\n",
       "      <td>0</td>\n",
       "      <td>11219.38</td>\n",
       "      <td>11131.84</td>\n",
       "      <td>6373.89</td>\n",
       "      <td>131.77</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2006/8/8</th>\n",
       "      <td>1</td>\n",
       "      <td>11173.59</td>\n",
       "      <td>11096.28</td>\n",
       "      <td>6378.16</td>\n",
       "      <td>134.38</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2006/8/9</th>\n",
       "      <td>2</td>\n",
       "      <td>11076.18</td>\n",
       "      <td>11185.35</td>\n",
       "      <td>6474.04</td>\n",
       "      <td>135.94</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2006/8/10</th>\n",
       "      <td>3</td>\n",
       "      <td>11124.37</td>\n",
       "      <td>11016.71</td>\n",
       "      <td>6357.49</td>\n",
       "      <td>135.44</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2006/8/11</th>\n",
       "      <td>4</td>\n",
       "      <td>11088.02</td>\n",
       "      <td>11040.73</td>\n",
       "      <td>6364.76</td>\n",
       "      <td>134.10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2008/9/18</th>\n",
       "      <td>496</td>\n",
       "      <td>11019.69</td>\n",
       "      <td>8878.18</td>\n",
       "      <td>5689.85</td>\n",
       "      <td>109.55</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2008/9/19</th>\n",
       "      <td>497</td>\n",
       "      <td>11388.44</td>\n",
       "      <td>9734.02</td>\n",
       "      <td>6230.01</td>\n",
       "      <td>111.62</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2008/9/22</th>\n",
       "      <td>498</td>\n",
       "      <td>11015.69</td>\n",
       "      <td>9656.26</td>\n",
       "      <td>6181.95</td>\n",
       "      <td>113.23</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2008/9/24</th>\n",
       "      <td>499</td>\n",
       "      <td>10825.17</td>\n",
       "      <td>9438.58</td>\n",
       "      <td>6033.93</td>\n",
       "      <td>114.26</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2008/9/25</th>\n",
       "      <td>500</td>\n",
       "      <td>11022.06</td>\n",
       "      <td>9599.90</td>\n",
       "      <td>6200.40</td>\n",
       "      <td>112.82</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>501 rows × 5 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "           Day      DJIA      FTSE      CAC  Nikkei\n",
       "Date                                               \n",
       "2006/8/7     0  11219.38  11131.84  6373.89  131.77\n",
       "2006/8/8     1  11173.59  11096.28  6378.16  134.38\n",
       "2006/8/9     2  11076.18  11185.35  6474.04  135.94\n",
       "2006/8/10    3  11124.37  11016.71  6357.49  135.44\n",
       "2006/8/11    4  11088.02  11040.73  6364.76  134.10\n",
       "...        ...       ...       ...      ...     ...\n",
       "2008/9/18  496  11019.69   8878.18  5689.85  109.55\n",
       "2008/9/19  497  11388.44   9734.02  6230.01  111.62\n",
       "2008/9/22  498  11015.69   9656.26  6181.95  113.23\n",
       "2008/9/24  499  10825.17   9438.58  6033.93  114.26\n",
       "2008/9/25  500  11022.06   9599.90  6200.40  112.82\n",
       "\n",
       "[501 rows x 5 columns]"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = pd.read_csv('data/VaRExample.csv', index_col='Date')\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<AxesSubplot:xlabel='Date'>"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAY0AAAEGCAYAAACZ0MnKAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAABmcUlEQVR4nO2dd3gcxdnAf6M7tVOvbrIs9wqu2JhQTDOm2oTebIiBkEAgoaXAB0mAhIQk9BIChBIwgVBMM8aAG8UN917lKlm997v5/pjdu73TnXTqJ3l+z6Pndmdnd2ck3b77lnlfIaVEo9FoNJpgCOvqAWg0Go2m+6CFhkaj0WiCRgsNjUaj0QSNFhoajUajCRotNDQajUYTNPauHkBrSU1NlVlZWV09DI1Go+lW/PDDDwVSyrTWnt9thUZWVhZr1qzp6mFoNBpNt0IIsb8t52vzlEaj0WiCRgsNjUaj0QSNFhoajUajCZpu69PQaDSallBfX8+hQ4eoqanp6qF0ClFRUWRkZBAeHt6u19VCQ6PRHBMcOnSIuLg4srKyEEJ09XA6FCklhYWFHDp0iIEDB7brtbV5SqPRHBPU1NSQkpLS4wUGgBCClJSUDtGqtNDQaDTHDMeCwDDpqLlqoaHRhAhFlXXMX3+4q4eh0TSJFhoaTYhw5zvruePt9WQXVHb1UDQdhM1mY9y4cYwePZqxY8fy97//HZfLBcCSJUu44IILAHj11Ve57bbbvM4dN24cV155ZaeP2RftCNdoQoTdeRUAbMspIys1potHo+kIoqOjWb9+PQB5eXlcffXVlJWV8Yc//KHJ87Zt24bT6WT58uVUVlYSE9N1/x9a09BoupBdR8t58stdSCkxTdAPfbKV+z7Y1LUD03Q46enpvPjiizzzzDM0V0F13rx5XHfddUyfPp358+d30gj906ymIYR4BbgAyJNSjvE5dhfwNyBNSlkglOflSeA8oAq4Xkq51ug7B7jfOPVhKeVrRvtE4FUgGvgMuEPqGrSaY4RHPtvGkh35jO2fwJESFelypLSGN1ce4PcXjSbcpt/rOoI/fLyFrUfK2vWao/rG8+CFo1t0zqBBg3A6neTl5TXZ77///S+LFi1i+/btPP3001x99dVtGWqbCOY/8lVghm+jEKI/MB04YGk+Fxhq/NwMPG/0TQYeBKYAk4EHhRBJxjnPAzdZzmt0L42mp5LkiADgb1/swOmSJDo8C7EOFlV11bA0IcSaNWtITU0lMzOTM888k3Xr1lFUVNRl42lW05BSLhNCZPk59DhwL2DVlWYCrxuawgohRKIQog8wDVgkpSwCEEIsAmYIIZYA8VLKFUb768AsYEFrJ6TRtJa9+RVU1zsZ3Teh0+5ZUdsAwObD6q334vH9+Pe32cZ4KhmUFttpYzmWaKlG0FHs3bsXm81Geno627Zt89tn3rx5bN++HbMURFlZGe+99x433XRTJ47UQ6t0XyHETOCwlHKDz6F+wEHL/iGjran2Q37aA933ZiHEGiHEmvz8/NYMXaPxy9YjZZzx96Wc/9Q3nXrfwopar/1fzxjBPecMB2BPfkWnjkXTueTn53PLLbdw2223BVxT4XK5eOedd9i0aRPZ2dlkZ2czf/585s2b18mj9dBioSGEcAC/Ax5o/+E0jZTyRSnlJCnlpLS0VtcQ0Wi8qHe6OO+p5e797bnta+tuisLKOtLjIgGYNCCJqHAbt54+hH6J0Ww8VOr/pH+fD/8IjTdlTcuorq52h9yeddZZTJ8+nQcffBCAhoYGIiMjvfovX76cfv360bdvX3fbqaeeytatW8nJyenUsZu0JuR2MDAQ2GBIxwxgrRBiMnAY6G/pm2G0HUaZqKztS4z2DD/9NZpOw/fhPOOJ5ex4eAaRdluH3re6zsmBoiquPymLK0/IZFCaJ4xywoAkVu0rNKKqfN5C93euNqRpP5xOZ8BjW7ZsYfDgwQBcf/31XH/99QCsWLHCq5/NZiM3N7fDxtgcLdY0pJSbpJTpUsosKWUWyqQ0QUqZC3wEzBaKE4FSKWUOsBCYLoRIMhzg04GFxrEyIcSJRuTVbLx9JBpNh/PNroJGbSVV9R1+39mvrERKiIu0M7x3nFek1OSsJI6W1fLyN/tocLo6fCyarmXu3Lm89dZb3HrrrV09lGZpVmgIIeYB3wPDhRCHhBBzm+j+GbAX2A38C/g5gOEAfwhYbfz80XSKG31eMs7Zg3aCazoRKSUfbTjMCVlJvHnjFHd7cVVdh95346ESVmcXA3DioJRGxy+b1J9BqTE8/Ok2Fu/w+O/eXmUJVnRpYdJTePnll1m5ciUDBgzo6qE0SzDRU1c1czzLsi0Bv6JSSvkK8Iqf9jXAmMZnaDQdz+GSavbkV3LdiQPomxjtbu9oTWPtfiUwVv7uTHrFRzU6HhVu45XrT2Da35ZQYgiw8pp67n9/HVea3esqICq+Q8ep0fiiVw5pjmlM4dAnMZqsFAeXTsww2jtG01i6M5+HPtnK7z/eSnyU3e0E90dclHqnq6pTdvDV2UX8yf6yp0NNSYeMUaNpCi00NMc0ZTVKaMRF2RFCcOfZwwD41/J9OF3tn5hgziurePmbfca9G5pMX+2I8BYaa/YVcrl9qft4fWVxu49Po2kOLTQ0xzTlNWpxXXyUWoltrsj+YX8xn29u3wgVU0CZnDkivcn+UeFhCAFVdWqMxQXe46ktL2zX8Wk0waCz3GqOaUyhYZqCosM9YbbtnfZpkxHam5Xi4C+XHM/ofk2vPBdC4Ai3uTWN+qKDXsfrK0taNY4DhVXERtlJjolo1fma1mOz2TjuuOPc+3fccQdPPvkkAFu3bmX48OHYbDZmzJjBr371K+bOncvBgwepr68nKyuLzz77jOzsbEaOHMnw4cPd17nzzjuZPXt2p8xBCw3NMU252zylNAyruai6PnBMfWs4XFINwBtzp9A/2eG/U0MdfPckjLkUkgfiiLS7NQ1ZdgSAVSc8weTVv6S+onX5h059bDH9EqP59jdntOp8TeuxpkY3ueGGGwDIyspi8eLFpKamAvDTn/6Us88+mzvuuAOAjRs3us8ZPHhwo+t0Fto8penWbD5cyoq9rTfTVBiaRmyk5/3pr5ccr47Vtq/QqPAxhfnlwHfw9cPw1DgAHBE2CirqmLfqANE1RwGoTVNvqrKs5etgTSFpCjBN6JKTk0NGhmft8/HHH9+Fo/GgNQ1Nt2XrkTIueFqtjt758LlE2D3vQPVOV7NpxZfsyGPH0XKG23OJ2PgmTLgOgAvH9uXe9za6H/Im1XVOfvfBJn49YwS9ExqHyTaHmZwwJrKJleaGNgFAQy2OCDuLth5l0daj3G0vwiXs2JIyOSxTaMjdxTmPL+ONuZNJ9xO26w+z0NMxz4LfQG471yzpfRyc+2iTXcw0IgADBw7kgw8+CNj31ltv5YorruCZZ57hrLPO4oYbbnCnE9mzZ4/7OgBPP/00p5xySpunEAxaaGi6JZsPl7oFBsDOo+WMMXwEpdX1jP3DFwA8cMEofnLywEbnHymp5ievrsYlYWHUU/BRNvQZC1WFRP3wKrawy6ms9RYaH204zAfrDhNhC+Mvl7b8ra+itoHocBv2poSZVWiUHsIRoQRMhC2M645zIA6mEB0ZTrarN4lHdrCjupxPN+Vww48az9Ef//tB5QeNiejYFCka//gzTwXinHPOYe/evXz++ecsWLCA8ePHs3nzZqBrzVNaaGi6JV9vV0VrZo3ry4frj7DxUKlbaGyy5JJ6fukev0Lj3TWHUBG1kkyMqKR/qjc1AfSOuMitGZiUVivTjqMpTaEJymvqiY1q5itnFRr/+wnXVY/iBy5gQIqDBFcZOFKJibSzVfbmPNdKgKAd2gUVtby5Uq0oT3Qc407wZjSCUCE5OZmrr76aq6++mgsuuIBly5YxceLELh2T9mlouiX7CirplxjN41eMIy7Szg5LZtotRzxCI9nPw/G5Jbt5/MudAGSIAqKpadSnb0RtI6FRVq32E6Kb8Ek0QXlNA3GRQQiNqES1nbOeWWVvATAwNQaqCiAmhehwG/tlOkmigjiqgl5PcrRMzTM1NqLdnfya9ufrr7+mqkoV4iovL2fPnj1kZmZ28ai00NB0E/6xaCfnPL6MjzccQUrJ3oJKslIdCCHISHZwsNjj2N1ypIy+CVHMmTqAHUfL+WiD5+29sKKWv36+A4CMpGj6C6PMZkSc1/3Sw6sa+TRMTcMeFnhBXlNU1Da4Q3sDUnYY+k2EMI9gSqCCEb3joLIAHKmkxkaSK1W+ql6iyB2S2xyFFWqV+6DU2EZz04QeP/zwA5MmTeL4449n6tSp3HjjjZxwwgmAx6dh/jz11FOdNi5tntJ0C/6zYj9FlXX8Yt46Nh0uZXtOGZdNUpEl/ZOiyS6sdPdde6CYsf0T6WPkkrp93jouGqsciF9tU0LivVumEv+/y8m1GcKm7zjI9tTUSLdXs7vO+8FaVKkeuq19S6+oaWjaPOVyQeEeGHASHN0MFSpaakzYPs4//jxYWwAxqURH2HjipnPhtWe43/4mu2tOC+r+BUbBpwEpDlZlF/HC0j2cf1yfwOG/mnanoiJwIEJ2drbX/j333MM999zTqF9WVhbV1V0X/aY1DU3Is2xnPkWVddx+xhAmZyXz4rK9OF2SGaP7AJCR5OBgUTVSSo6W1XCouJqJA5K8oqdULk3YV1hJuE0wLvIIQytWc4ptM1KEQbxR5GbAjwBIsVe5F/6Z55uV9IJ9s/elorbBK7S3EeVHoL4SUoeB3RMNdc1wGJ4WBTWl4FAx/GEJqsDlNNsGBh54L6j7m0JjoFG349EF23l/rS5fo2kZWmhoQp7Zr6wCYPyAJCZlJQFwytBUTh6qHqD9k6OprndSVFnndoKPz0zirJGeNB3lhn/iYFEVfROjse1b7LlBXF9IG6G2j78cgJSwSrdPY+uRMh75dBvbc8sBFXrbGsprGoiNDOAPkRLeVYu8SBvuJTTOywqDKmMtSoyRRj2uj/t4WtlmcDZvbiqoqCPSHkZvS3hufkWNcXup63ZogkILDU1IU2yYhE7ISuK0oWluk5M1jXkfY83EtpxydhnrEPolRjMgJYbHrxgLQEF5LbuOlrM7r4LMZIdXjL5IGQQn3Q5XvQ1jVSWA5LAqdwbc855azktGksHYSHtQmsZZ/1jKL99e596vqmugpKousE+j5AAcUsKRtJEQbll3UZ6r/BkADkNoWI4fX/AZ/PDvZsdUUFFLamwk6YWrGSSUnye/XGkfH6w7zJD7FpBb2jgooCdhapzHAh01Vy00NCHNbsMk9PNpQwgLE1w0ti+zxvXljrOGuvskx6j04te+vJK/fL7daFNRU6mx6tjiHfmc/fgytueWkxYXCcX7PTcZeRHY7DD8XLBHQriD5LBKiqvqGn3xesVHNis0GpwududV8OF6jwP++SV7qK53cubIAEkK85VznoueUdrExS/CqFmQPFj5NkxNwzBPqb5PsylshPf5TVBQUUdqbAQnf3s9X0fezbORz5JnCI2PjWCBdQd6bubcqKgoCgsLjwnBIaWksLCQqKiWL0JtDu0I14Q05grmIemxgAp3feLK8V59UmIbh9Waq8NNofHVNuVUTo6J4Jaw+XBwBYy4AAaeChNv8D45OokEynG6JIWVnroaQqj7V9f7NwWtO1BMamwktQ2NhcqO3HIGp8VyytA0/xPNV8KOEeerz/QRcPlr8PpMQ2gYmkaMRWhMmM3dS7N4t/w64l2BzVMNThcVtQ0UlNeSGeeJ/DpffMufDaGRHqceLvuLqgJep7uTkZHBoUOHyM/Pb75zDyAqKsorDUl7oYWGJiS5938bOGVoGgs255IeF0k/iznKl5QmFreZAuW7PYXER9n54f6zEH+4VB1MHwlTftr4pJg04p3qjfvqf63wOuSIsFNZ5/8BffFz3wHw9FUeofab9zby6CXHc7ikmoykwHMgbyvEpIMj2bs9thfs/x5KDYe1VdNALTSsrIwlvomCTP83fzPzVh0kyRHOGam1Xsfyy2uRUuI03r4fXbCd04alMbJPz6sIGB4ezsCBwa2c1wRGm6c0Icf+wkreWXOIX8xbx7Kd+cw5KYuwJtZGNJUAMC02kvOPU07j1NhIhNNS0yI8wEM8rjcxderNfudR7xDJ6AibX0d4XYPHiWzN7/T2apXO/FBxNf0CCQ1nA+z6Agb6yR0UkwalB2DR/6l9H6ESE2GnnBioLvF/bWDeKjWG4qp6BtgKvI7VNrgor21whxODSsmi0QRCCw1NyGGupQC1EnqunzQgVnwFSgT18NpFsGcxQgieuXo8T101nr9fPlY5nAEyT4Ipt/i/YFxvomoKGjVLqbLO+lunYa62BtiV5/3Q/ePHWymtrvdy3rtpqION/1U+i1GzGh+PTvTeD/NOYeKIsFFKDM6qYm5544dGjmzfBIV98TXNSPLLaymqrGNQqgrFra3XUVSawGihoQk5NhwqcW9PyEwiKryJXE/lR+Hgaq+my4YK2LcU3pgFUiKEcqCPz0xSZiCAs34PETH+rxnbG3tNIXYam6EcETa/jnBrqvHPNuUypp/HvPPKtyryanBabON7ffsEzP+52h5yVuPjZkqRAGQkOciti6KytJDjdjxB1XPTvI4/tnA7CdHhKmIMSHMVgLDB6fcBEI7TLTTMzL21OvRW0wRaaGhCjh25njf1ASnNrFZ+7UJ4+Sx6R9ZhCxNs++MM/nBWb8/xF6dBtRER5HLBF/dDRKxaCxGIuF4IJKmUNjrUOz6agopavt3trYlstAg6gHBbGI9ZMuFOHpjMWSN7Nb7X4R/U59BzIMLPXKMs1f1iG58/56QBFLtiEDUl3Gr/iEG127yO55bVcnxGApdMUA7RBGehuk64ulcUdeT5CA2rqU2j8UULDU1IUe90uVdeA02voHY5oUCFmi6dVc/GB6cTHWHDXlvi6ZOzHnYtUtsl2VCyX71l+5p9rMQqofPR9UMaHbrmRJUw7pqXVnLE0C5Kq+v502fbvfqdOCjFK7HhKUNSsfnzy1SXQOpwuPQV/2OxCo07NjQ6nJnsoCIsFof0pFHB5XnoV9U2MNG5kbkFf+VHWbEku4ogrpd7nUcUtdw+bx0VtQ0M66Xyb/mL/tJoTLTQ0IQU+woqqXdKLh6v0mScNCQlcOejm92bkbk/EGMKGHNNg0mpUVs7z3iwZ0xqehCGQEmPUM5ha2ba1NhI/vJjpUGYQuNAoXeY6sQBSdx59jAvoZEaF+n/XkV7of9kiPRjugJv85Qfx70QgrrweGx4BEV9tUdDqqxt4Jyyd4nd/g5vjv6B8Ko8JRRNTUN4HOBXTOoPaE1D0zRaaGhCCjNVx82nDmLXI+cyordP6GfhHrVCGqBwt6e92rIozRQav96vTDEFu6CmDPIN001TpinwPJzrq9nwwHS++62qpX3yEBXuaoajmhFHR0qV8DjFSGsyvHcc4bYwEhwWoRHrR2hUl0BlHiQ34ei3ahoBqInwDsM97aGP3ClQKmobsJsKzornlaCN6+VOUxKFiib77PZTSIqJINwmqNVCQ9MEep2GJqTYkVuGLUwwKC3Gf7nWpycoR+6DRVC4V7WlDoOqIk+fqkIIs6sHbuow2DBP/QyapvJMNfcgtptCo8r94F/4y1Pd6yySjbUfptDIMTSOIemxLN9VQJRdOe69NA0/CxDZ+bn6HHBy4LEEIzSie4Ml6WmcqOJgURUjesdRWeckud4QspVGVJqrwS0Yrx6fSk36CEb1VYIw0m7TmoamSbTQ0IQMNfVOvtlVwKDUGCLtPhFTR9ZDqSpVijRs7kV7VeK++H4+mkaRytEkBGRO9aQ837vEncW2Sdyahid8dXhvT70Ns7BTUVUdW46U8vuPVUSWqU3YberV3io0+iT4Cbfd8RnEZyjzVCCa8r0YNMT2BovMjKOKsup6ahtcuFxOEmpzvE8YcaHbp3HD5N6QNdh9KMIepn0amibR5ilNyHDbW2vZcKiUm08dBEe3QqXFN/HSmfDfazz7790IG95SuZkcyVDto2lEG4vgJt/kfZOkrOYHYtj7qfefUiM6wkZUeBjFlXU8t3iPu91lVNAzizRFh9s4c0Q695030h2Z5EXJQZUuRDRR1MnMdhsTIP0IIOL7eO3HiWqKq+qorG2gnyjALj1+C064CYbP8GhTDd51GSLtYVrT0DRJs0JDCPGKECJPCLHZ0vaQEGKjEGK9EOILIURfo10IIZ4SQuw2jk+wnDNHCLHL+JljaZ8ohNhknPOUEE19gzQ9lZp6J19uy+PmUwdx2ZgEeH4qvHOdp4NvbqVN76rPzCkQneStaZTnKrs9QGw63J8Hk+aq/fh+zQ/GzCBbH7jQTUpMJIWVdazYW4gtTPCni4+j3hQahllNCMHL15/ATacO8j7Z5YS6SjXO2N6+l/ZGCLj2fbh5ScAusbHeVQfjqKK4qp7KWiezbYtwCRsMO9c4aPxeLH4bKxHdVGhU1TXwwtI9Or17JxCMpvEqMMOn7TEp5fFSynHAJ8ADRvu5wFDj52bgeQAhRDLwIDAFmAw8KIRIMs55HrjJcp7vvTQ9lYJdsOdrwBOJNKJ3HGx5Xx0/ukVFPC39q/Jj+GPQNKVVVJeohzFAeY7yXZjYIz1rHGQQphf3W7hPmvCGWvj0LqjIIykmnMKKOoqr6vj5tMFcPSWTRMMclebPf2Hlk1/Cn/pCRS7ENSM0AIacCQmBE8+Z5rJSVARWvKiiuKqOitoGxobtoSRlvOf8CCNKy48JDiDCFtYtHeFPfrWLRxds5+ONR7za12QX6bQo7UyzPg0p5TIhRJZPW5llNwYwcw3PBF6XKvfwCiFEohCiDzANWCSlLAIQQiwCZgghlgDxUsoVRvvrwCxgQRvmpOkuPGOEvt65jbwcFSbaNzEathh1KGpK4Lkpnv7n/hWSBiqndp+xUFuu0oHkbgakqmwXlaDe4H1MNky+CXI3wuSbmx+XzQ62iMbmqW0fw+qXoLaC5Ji5ZBdW4pKQaDy0r5s6gKhwG1ec0L/p6699XX1KV3BCoxnG9k9kZM0rhONkY9RNxFPFXz/fQe/4KIZRg4zsCy4j51aY8ZU3zV6+5qnw7qlplFSq+VlX6+eV1XDpC98TaQ9jx8PndtXQehytdoQLIR4BZgOlwOlGcz/goKXbIaOtqfZDftoD3fNmlAZDZmZma4euCQUaLHb2f4zkRADeVNlszfxQvvSfomp5D5vu3W4WJqoqVNqAdHrKt7r7JMOVbwY/Pnt0Y/OUqcm46kmPi2TZTpXHydQwwm1hXD2lhf+X7SA0JmQmUk2UCqCKiCW1QQngV7/L5glqEJGxcPyV8MOrMFiFD3v8Nj7mqW6qaZgIlHW7qq6ByX/6CqBbzycUabXQkFLeB9wnhPgtcBvK/NShSClfBF4EmDRpUs+vpNKTyd3YqCk76hqcOx5tLDRuXa38DIkBHsimc7tor6feRFxf/32DJdyP0HAr1IJ0y2K9REfgLLuN8DEHWcu2tha7LYz/zJ2ixvFhf/pWqwACIQQxooawyFgYMBV+b0mLEhEDIkyZ8ix095BbM/JrlyU7cbOpaDQtoj2ip94ELjG2DwNW3TzDaGuqPcNPu6anU3rQb7Nt4W9UVJHpw7jsVUgbFlhgAKQaVfyyl6u3aYCEIBzeTWEKjY3vwh6jnriZVl20QWhs/8R7v9foto3T4OShqYzplwAJGZyUqsxq2QWVOKjFHh3X+ITwKBV+vP1Tlb4XIG8bQ117umXCQpcxh9Jq9Tcy85edNizNXbZX0z60SmgIIYZadmcCZuKdj4DZRhTViUCplDIHWAhMF0IkGQ7w6cBC41iZEOJEI2pqNjC/tZPRdCPKcgIfc9bCOY/AFW/6TxfuiyNZmai+e9rjL0gb2bbxhUcrn8b7N6psuaB8KAAI0uM9IbQJ0c04vkHlv1p4H6x/U/llrPdpTxL7E1+TQ3pcJKXVdcRQQ5TDj9AAGHYOFOz0LIx883L+mPtz+lc3Xzo2VJBSsmRHHrlGanpTaGzPLScqPIyxGQmUVtfrqKp2pFnzlBBiHsqRnSqEOIQyQ50nhBgOuID9gFmY4DPgPGA3UAXcACClLBJCPASYOaz/aDrFgZ+jIrSiUQ5w7QQ/Fig7DPYoSi5/n3Vv/JbTbT7J+DJPhL7j/Z/rj9RhcOB7z749iAd5U4RHN46eqvVE4fSKb6Gm8aZRLbDvBEgZrN7ym1rU11oSMqC6iD4JLsrK6wgTkrCoAEIjxqhXXlOi6pKXKrNgv4b9/vuHICv2FnH9vz2p8V/7LpvS6nreX3uYiQOSSDEWXJZU1/tP5aJpMcFET13lp/nlAH0lcGuAY68AjVJ5SinXAGOaG4emh1GeA3F9OBQzhhvqf82b06P5kX07LPytOt5nXMuu12u0R2ic97e2jy/c0dinUWsEDdZX0T/ZYye3rvxulqoC9WCf9Wzbx+gPY93H/NLLuNdmLGwMVDckysjrVVOqAggM7A3VFFTUMunhL3n1hhOYNjy9Y8baSspr6rnxtTXcO2M4//vhkNcxl4T31yoL96SsJJKMUsDFlXVaaLQTOo2Ipmsoy4H4vqw/WAJATNYE6H8GJA8CZNOrpP3R+zj1Ofz8xqvAW4M9Sj3gTcpz1cMVoK6C9LgonrxyHKuzi/znyFr1LxUZNfJCb+d36eGmc021lUiPVnGVzfDFRATKoGvktaop9XKI11WXc9tbawF44/v9ISc0duVVsHJfEZc8/z2ZyQ4mZCay9kBJo34nDkxx/22KtV+j3dBpRDRNUtfg4s2V+9224naj9CDV0b35/UdbCLcJd2U5hs+A4a2IqU828ifFttMDLjzau+7234d7NA3DTDVzXD8ennWc//M/uxv+e63atqRwRzr9F1tqLyxCY5gwgg0CahqG0Kgt8/IxOahlxV5lPU5oiZO/k7D+Lx4oquLMkb2455zhnDTYk0b/7unDOH1EOkkxavzWGuiatqE1DU1AduSWc+tba9mdV8GBwip+e14bncsm9TVQeoiVjukIAf+75SSSY9rog8g6GWY+p97s24OoBE+CRBMzJXttMyuMrRl3V77oyS5rEugh3h5YhEaMqG36fpEW85TT8yCOFh5TVVxTRbC6iJIqbwEwum8804anc+vpQxh23wLqnC5OH6FeHpKMhZfFVVpotBda09AE5I6317nTe3y2OQcp22lpTPE+QPJ1XhynD09nbP/Etl9TCBh/jcdO31bientWUZvkblKfzQmNgl2e7QX3QPY3EGZ5Yw/vHKHhJhjzVIUh2EQYWZZfYUVt4LQr/1q2lxv+vaqVA209viG04yz/P8dnqDllJCltzhQaWtNoP0LvNUITEuSW1rA9t5z/u2AUidHh3PXuBtYeKGbigOS2X/zoFgDWV6Uwe3TbV0R3CH7qcbvTitRWND5mpWCn935lAaSP9Cxo7CRNw00g/1BErFrgV1OmzGZhdojrQ7zTo2k0ZZZ85DNV1KquwUWEPfD7Z73TRZgQ/svdtgKrfyLJEe5O4wLw4uxJbDhY4g5OiI6wER1ua6SdaFqP1jQ0gFoIlldeQ0VtA6XV9Ww8VAKot7jpo3sRaQ/jw3VHmr5IMFQVwad3UW+PYa/sw9iM5osMdQn+hIaJ5aHqlzKf31PZYe/FiR3p0/CnVfQO4HcJC1NCJnu50jQcqRARS4ylBGxZAKFh1ToPFFX67QPww/5iht63gD8bAqY9KK2qIyE6nHdvmcoXvzrN61hyTITbNGVtK6rUjvD2QmsaGlwuybS/LXHvR9jDOHNEOrYwwag+8URH2DhrVC8+2XiE/7tgVJNvlc2y4jmoKeW90c9TtdZBZqimeLAKjcQBRmoTCRFxUFcOLpd66Pqj4qj3fn2Vd0r2jjRP+QqNy15regFhTakKVT6wAnqNAXsEjhqPUCyp9v+Gnl/h6bMnv5Ih6f7Xgny6UTnYv9tT6Pe4P6SUPPHlLi6ZkOH3/6O4qp5ERzgnZAWn9SbFhLt9GiVVdezJr2RCZiK6CkPr0JrGMUpxZZ074d46I+wV4LoTB+B0SRZszmVYrziiI1Q6j8sn9ef82s9Y+vJvWn9TZwOsfQOGzWB53XD6JzsaV+gLFeIsQuOyVz0L8RKNbDhNaRuVeZA2Ak640dNmLdvakeYpX0Hmz1xlZfh5xoZUebvCHdidnuy+gcxT2QWePvsKAmsa2YXqmLliOxjyymt58qtdnPrYYhZvz/PKhaXqrhz1Mkk1R5Ijgq+357Env4KHPtnGJc9/x2vfZQd9vsYbLTSOUX7y2mpmv7KK8pp6vt+j1iNseGA6D80a407tfXJyGdSph8Npw9J4OPzfnJ3zz9bdsLJQpeSoyIVxV7Mrr5xBqR348Gwr1uJIEbHG+hE8Zibf1eJWKvJVpb2xlnWxkXFgZGDtUPOUL5HNBAZcNQ/SjfxXMco8ZXeq4IfU2AhKqur9BkBYHctNRSZlGwKlqLIuaL9CtSW9+Q2vrubCp7/BaRS4+mRjDlV1TnrFBb9Q77ARzPHnz7axYLPSfNbsL+a73QXc98GmoK+jUWihcYyQXVDJ5Ee+ZPYrq/h0Yw7rjMVQ+wur2Hm0gn6J0e6Y/EkDkgDJfXuuhr9kqTTmpW3MI/n907DlAypiMnkxbwQ7j1YwcUBS8+d1FeGe3FJEOPwIjSY0jYqjyrwVbZlfZJzHRBUomqkjaE7TAI8WFRYOEQ7iberhftqwdGobXBRUNH7YW4WG9SFvpcHp4kBRFUPS1XyzC/2Xz/XFrIkxZWAyZ45IZ8fRcgb/7jMeW7idAsMs9rfLxwZ1LYC7zh4OwNKd+e5rHy6p5uqXVvLmygNugaQJDi00jhEe/nQbeeW1LNuZz63Gal9Qi6N2Hi1nWC/jQVawi5mH/sofzjZSiztr4bEhqvBRWyhUtbTPL/olf/pchaROHZzatmt2NKamEJUAQ6erKoFpI1RbU0KjMl8tMvQVGmbmXWcnRvIEIzTOuB8GngqjZkK4g/iaw6ydtomZY5W2tSe/cbSYqV2kxkZQaYTl7sgt58Knv6GsRpm08spraXBJd0hsc5pGVZ0q6Vtdrz5/fvoQ/nndRHfN9WcX76Gsuh57mGjR+pHzj+/DSYNTqHdKkhzh/HhCPw4Xe1LEVNcHUc1R40YLjR5IcWWdOzU0wKHiKr7afpRfnDGEZfec7tV359Fy9uZXMqyX8XB581Jsa19jTh9L6vLaUvj6Ic9+Q8sfeg0Fe/gmbBL7pcfsc3yoRk6ZzHwW7tigHrx9x8Hs+R7fxKHV/s+pq4S6CmWeikr0tEfGwYVPqiJIfSd07LhvX+993+aISYU5H6vV+I4UhKuB5BV/ZniYWtzoT2gUVdYRE2Ej0RHhfsg/tnA7mw6X8u0uZe4sNDSULMOZXdnEmo/iyjrG/3ERX2496tYGHBE27LYwJhgaaZhQPpb46PAWO7F7JyjN8fTh6QxIjiGv3CP0A2lKGv9oodEDeeyLHZzzxDKeXbybspp6vtx6FCnhson96Z/sHUnzxJe7qHO6OHVYmqqrUJytDhxaoz79JQ4002k0QUlVnceE4XIhC3ezvS6NBy4Y5e7jN2dTKBFm8xR4MjHLpL43F46s8z72+ixYZNQii033dkpHxqm1Gtd90PE+jWRL6vWWmsKmevKNptmriQ63seWI99/b6ZLsyC0nKSaCmAibWxiYD3Kn4QMpqFQP5gEpyndVURs47LWgopbaBhdrDxS7H+LR4SpI4umrVLbj/skOymoaWpYg0qC2XjnTJwxIIiPJ+zughUbLCPFvrSZYKmsbuOrFFTz8yVZ2G1XLHlu4g1+8tY4fDpTQJyGKzBSH1xvaXy89npgIGzPH9VV5e6osYZHmm/SFT6q04xbqK4ubHEtxZR0XPP0Npz22WGk85TmEu2opisrkysnKyf7Ls4Y2eY2QxW7xdRRbUohXl8DexbD6X2rfDNk1+3emH8N6/0BhwQHPS4ebl6hTa8uYProX89cd9oqievmbvXyzu4Cy6nqiI2zuh675n2Wu2PZoGqbQCPxwrjEe6nvyK9zmIocRudcrPoprT8ykvKaBsup64qNavlLA1KQnZCYxKM07AKPK0JQ0waHXafQANh8u5YKnvwHg+73qwR8XZae8poGlO/PpHR/FxCyPfX3pPdOoqXcxvHccl03M8AgS60pmM814TJrbJFPiyCKxKpvaiiLCm8gL+PXmg/yq4u/kyyQ+2ZjF8CEqZ1NNXBaOCDvbH5pBZFvWenQldkvUjiVfk1szM4lJU5/pI5VGYmtjbq2W8tNl3kKtJVjSi8wcN5H564+wO6/cnQ3ge2PNRVlNA44IO3nlKpLMdCfnl9eSV17DgSLl+DbXWlTUBH44m4JiT36l2zxlhnuDSj9fWl3vNk8FTXUxhIXz89MHc/aoXozqG+/2uZhUaU2jRXTTb67Gyp+M1bY/PW0QccZb2EVj+/LQLFWmJLeshovGempmD0iJYbjcB1895H47JGcj/NvILmtdiBaT6n747Os/C4D6ypImxxOz/wsusX3DLfaPObB7K7x+kTqQOgSAqHBb911YZRUaDZZ6G74+DjPb7hX/gZPvbKStdThxvSFzSuvONX0xNaVuU5BVSygxtI5/X38CjggbVcYx09GdV17L5Ee+4qmvdhEVHkZ8lJ2o8DAq65oXGvsLKyk3HuqOcM87bXxUOE6XJLe0pmVC4y9Z8MKPCLeFMapvvPta1gSZNVpotAgtNLo5DU4Xa7KL+empg/jtuSONcFlIj4tivBG18qMhKUwf5ZMW4+XpsPxvkLdV7a+yrL+45RtPfL89EmY+A6MvpqjPqUDzQsNV5lkRff3RP7m3Y9OaqPPdXbAKDWvqdGv6c/BoGgkZcNaDLTcTdSWW7LexkYbQqGnA6ZJ8svEIO3PLmTN1AKePSFdCw3jomqG5W4+Uui+VEhOJEILYSDsVtf6Fxsq9hcx5RSU+rHdKthtBHFZNwxQUuWU1wfs0XMaiQNNPZ2FousdcqDWNltGN/pOPLeoaXEFlld1fVEWd0+W22fZNVE6+yPAwxvRL4H+3TOXVGyZ7v9lX5HvekncuVJ8HVqrPiTeomtt3boPbDUfvsHPgslexOZRAclaVNDkmV5XyeVRHpjFeeExe4zJDeF1GsFh9GtWWFOi5lkVi0clgC706FEFjs6t0KTUlxBqaa2VtA298n81tb62jss7pdm47IuxuDcJcQ7HhkEdomFFLsZH2gOapf3+b7bW/5XAZ9jDhla7GKijigvVplB4MeOiFaycyc5zSvqt0yG2L0EIjBHG5JJe98B3XvbyKF5ft4YBlUVRNvZPfvr+RnUfLWbwjj//7UL3hDjXWWUwZpArRpBmlLSdlJTeOUjqy1rJtCIbqIpj0E7jwCbUfaVkFbWBzJALgrC71aq+uc7ofGGqQpVSLaHJ+5AnTvStjHqeHWAW4VmHVNMy6GbUVULIf7EZUTkyIrz8JhqgEpWlEqAd0eW0DO/M8obfpRo10h+EIr6l3Ul7TwNk+Gq25/icm0k5lAE3DZvM2Ve44Wu6lZYAyKZkMDZDnqhGFuwIeSoqJ4J5z1KI/bZ5qGdoRHoIs3ZXvflv7ZncBW4+U8cSVKuxw0dajzFt1kHmrPG9R9jDhXnV74fF96BUXyeSBAZK5HV4Lb12utjNOUGU+pVSmluimNYGI6HicUiCtZhlg+hNLOVhUTfaj5wNgqyul2hZH+sQL4etb+N45ir/NPbf7+jGs+NM0zLKwvUbD4TXePqHuiiE0YiLVw7uipoFyi6ZgvpQ4Imw0GL4GgDNGpHPTKYO45T8/UFRZR58EJUibMk+FW1KmR9rDqG1wucNtTTItNdlPHRqkUC7c2+RhhyEQS6vrqal38tRXu8hKieFyI42Oxj9aaIQgH284QnyUnSevGs+H6w7zxdaj1NQ7iQq38dmmHK++j18xlkGpse4vgBDCrW34ZfN7nu3UYbB3iSoqJJ3NCo3oSDvlOMjLz8P8Wh0uqeZgkcch3OB0EV5fRr0jnuSYWH6b8QYjBg5gak8QGOBf0zBrh5sFoHqK0Kguxm4LIzrcRkVtPUctSQfTjNxP0cb/nRkplRqrXliuPymLfyzaSb9Ej9DYV+g/saHN4u8Z0SeeDQdL3OG2JpkpDu4/fyRbjpSRHh/lewn10vPdUzDkbLUQMzwayiyVFxtqvf92eEJ6H/lsG8t25bPcWJR40bi+RIWHaCLNEECbp0KMeqeLxdvzOHNkL04fns4ZI9KpqnO6v5TrD5Ywa1xffj5tMK9cP4mLx2cEX/nO5VK1E+L7wS/WQnxfVcJ0/ZvquHUFsx+iw22USQf7j+S4V5zfPs+zwK2uwcWmw6XEyQrshinrzzdexJwzg88TFPJYNY0SQ9szhYZpzsv6UeeOqSNI7O92IMdE2qmodXql3jCFhrlm4lf/XQ+otCIAN586iD/OHM2s8UqApsdHsje/klEPfM6r3+7zulW4xTw1qo8SvLF+/BY3njKIx68Y53+8a1+H5X+Hf8+ApX9RbdZ8ad895U5lY2IN+zYFBsCqfUVoAqOFRojxwbrDFFfVc5HhpOttvFW99l025z25nJzSGkb2iefeGSM4Y4RhP172GCy8z5Peo/QwPHEcPDkWVr+k2j69G/6YBDkb4ORfQcpgJTSkEz430p03o2lEhdsoI4Y4qnhjRTa5pTWsPVBMqmGqKK2u57s9hcRTRVxSD7Dr+8NmeVstO6R+56bQmDAHfrLQO7ttdyV1mCoeVVtOXJQyLZVb1jfEGrmfxmcmAlBYaeaiUr+fqHAbs6dmuav13Xf+KIRQkUq//3ir163CLOapFCMU1hQeQWOtGWKWrrUWw/r6YfjvdV6nBDKX+kubovGghUaI8cnGHAanxTBtmArZNKNP3lx5gK05Kp3DCOsXqni/+kJ8/wxsegeK9sGSP6uiQcXZ8Oldqp+5UjlpoKfOQ4KP7bYZoZEcE0G5dBAvqth0uIwT//wVUuJ2fpZW17Etp4xkWxURsU2YyLoz1tBZ6VIROm7zVAJknhi4vGp3Ik05iSnYSWyknfKaei+fhPnAHZzmvdLdFBq+xEba+d25I/32cVmyzJ5l/C/NOSmrZeOtKfFsr38T1s9TQt0MfYam09lbaKo+iEYLjS5hwaYcDhZ5IqJ255Vz6l8Xs2RHHlsOlzIhM8n9pexlsd/2S4xmclay++0OgE3verbn3wpPT4QtH3rf0Bq6O/0hz0Nt8Bkw6wXPsWaERkyknRNHD6R/dB0bLIWbpg1XX8z1B0v5bk8hCVQ0a+rq1oy5FKb8TG0XZ6sa2+BdaKm7k6Ye8Bz6gZhIG/nltbgkXH9SFl/86lR3NyEETxm5oYBGUU9WbjxlIOcYpYOdLun+DlizzI7rn8i+P5/H6L4t/F1WFauKiOlGbrMPb4GyHMg62dMnvm+j05bfe7pPPjTB3nwtNJpCC41OZtHWo/zszbXc9e4Gd9sD87dwoKiKfy3fS2FlHaP7ejQJtXpabV89JZN3bpnqFX7IgRXqCz74DLUvnaoc6aS5aj8m3ZNTasajMPJCz7lhNhh3FUQaX9Co5k0CIiqRWDwC780bp7gF293vbqChspgoWQPxfYL8jXRDLn0ZTrxFbZfnGJqGaL7gUXciZTD0HQ+rXiQ5JoJdRrjtkPRYT0Zkg4vG9mXT76fz9V2n+buSGyEEmckOiirreGvlfk7562ImPLSIrT4JEVscZbf6JVjxrHrpERah5apXKd+v+1DtW7URg/7JDq/IrBMHpWhNoxm00OhEnvpqFze9rnIUmU7Foso6VhqOt293q4e77yK4cMMkcqJvVFRNKRxapYroXPIy/HIzpBpmheOvgJN+oTLSlhg5iBIDrMieM1/1jwviQR+VQLTTY/PtFR9FomXhVT9hOBR9TV89DdMh3lCr/g6Rcd1r1XdzCKFKwRbu4sQB8e6Sq4EW1sVFhTMorfmkjEkxEVTXO9lnlIstqqxzC6RW0VDnMcHWV6m09FbSRsLg02H8dWpRa4AxmRyfkUBuWQ0NTpffvhodctupvLPmIOP6JzJ1cArPL9nDk1/uol9SNE6X5JzRvVi45SiXTMhwF60x+efsiQjwrnS3dT68M1tt95+sVnE7kuHGRapEa3wf2P+NsuMW7Fb9Aj3I+46HH78Y3CSiEghvqMCGEyc2esVH0uD0mL9GOUrAiaeWdk/FDN9sqFXaRk/SMkwMc9spmR4fRGwLih+52f2VeiHpNYpko7Z3g6sND+XyXPj7cFXfxFqWt7pIac9WTN9MbLoqjuVyNRLuSQ7PS09msgOnS5JTWkP/5A5OYd9NafbVSAjxihAiTwix2dL2mBBiuxBioxDiAyFEouXYb4UQu4UQO4QQ51jaZxhtu4UQv7G0DxRCrDTa/yuE6OR0oJ1DbYOTIyXVnDosjTlTszghK4nHv9zJ3e9uINwmePyKcXx912n87bLjG517+vB0pvmupv7hNc92f0tiuqgEj2nI9FHkq4SG/my6Lca4Rh+htKO4unwS35lFlsjhzBHp/P1sY1FhQg/IM9UUpqax7WPY+qES2D0NQ2gMcDSOmgoalwv+82N4fioAiYbQOFJSjRCemhkjesex/N7TA17GixzDtLvsb5C3xfvYkLO9982/S0y6Mt1WNw6n7ZsYzYAUBy9cO4GMJCUoLv/n97oMbACC0adfBWb4tC0Cxkgpjwd2Ar8FEEKMAq4ERhvnPCeEsAkhbMCzwLnAKOAqoy/AX4DHpZRDgGJgbptmFKIcLKrCJWFgqoPeCVG8e8tJjDUq1w1IicERYWdQWmxw9lxng3euo5Qh/vuZzugtHyhbb3Q7PNiMokQnJhl26FX/Quz/lgXHLeX5ayeqaCJ7dM9IpdEUZujtge/U266ZfqUnYQiNsFpP2pi4qBbm1CryXhthZpc9VKwKPKXGqf3B6bHBv9lLQ0vJXg7/+4mn/aRfqL/D7evgZ9/B7I88x5IGqM+dn3sHhqD8hkvvOZ0ZY/q4CzTllNZ4LWbUeGhWaEgplwFFPm1fSCnN+LsVQIaxPRN4W0pZK6XcB+wGJhs/u6WUe6WUdcDbwEyhnpBnAP8zzn8NmNW2KYUeRZV1nPWPZYCnIA3A7KlZAI3MUc2y4lmozFNO7fP+FjjE09Q0irNV6GF72NwNofHnaXFs/sM5sHuRutXhFSrBXMkBZZrqCWGnTREWBmHGA3TMj6HfxK4dT0dgqathEnSyQBOzzkiYOi/dWBR4oKiK6HAbyTHGyvKWrMCu8rP47tf7YfrDymyYPEildBlkccybZqr5t8IX9we8tJnwEzx10DXetIdP4yfAf43tfighYnLIaAM46NM+BUgBSiwCyNq/EUKIm4GbATIzQ9/8IaXkuSV7ePprlTgtM9nhFXlyycQMhveOc6daCIpN/4NFD6iH9yUvN0qN4IU1hNbVTtXJ4vtBWDjhZQcIj7CpdSGghFhtudI0eroT3MQeBXX13gvLehJeQkMJyBabp4qM/E8OpXma646q6pwkOSJINTSPgEKjrlL5jazmPz8mpmbDnRMHeLa/fwZOuh3iejXqFm4L4+2bT+TKF1e4KxBqvGnTq6cQ4j6gAXizfYbTNFLKF6WUk6SUk9LS0po/oYv584LtPLZwBzX1Li6bmMGye08nxudLN6Zfglf0RpNIqRby9T4ebvm2aYEB0GesZyGfn3DDVmHWzS7Yqaqi1VVAxmR1rDhbpdbo6U5wE2F8few9XGjUlnHLaYMB/+k9msQM964pASmJCre5Hc/RllocfRL95JMCla3gjVme/doKWGc8bq7/zNPenGZrdZCLMPjh1YBdTROau8a9xotWCw0hxPXABcA10lP44TBgfWJkGG2B2guBRCGE3ae925NbWsOLy/Yyum88o/rE89PTBjXReTMcXNX8RQ+uguJ9MOUWlbq8OYSA04yYg/bSNEAJo5wNyhQFKhYe4OhWlfH1WNE0TNt6T9U0LMWYfj1jOLseObdxmv3mMLWChhoVEgv0NjLfRofbuG7qAM4e1Yuf/Gig//OPrPPOGbXkz57Ajpbm+Lp1tZFzLQNyNyrN2A+JhlAr0eYpv7RKaAghZgD3AhdJKasshz4CrhRCRAohBgJDgVXAamCoESkVgXKWf2QIm8XApcb5c4D5rZtKaLHjqPqH/L8LRvHZHacwpKkaAAt/B/Ou9OSOCsTXDylntnWBXnPEpKq1G+f/I/hzmqPvOGWGMutymEJjx6fq02oK6Mn0dKEREaveymtKEUI0Fhj1NfD4cSrQIhCmpmHZ7mOYqKLDbZx3XB/+NXuS/6yyLpcKF6+rUGYqAKfPd+T29UoQBEPaMLVoMa4XbP8E/jrYb7fEaKVpFGvzlF+CCbmdB3wPDBdCHBJCzAWeAeKARUKI9UKIFwCklFuAd4CtwOfArVJKp+GzuA1YCGwD3jH6AvwauFMIsRvl43i5XWfYyWQXVPLS8r385r2NAAzv1YSwMCncrb5Qb10O+5b573NwlYoWOfWeoFZuuxECblsFJ7RjUFqv0epzxwL12fs4FU20db4yaQw5s/3uFcq4hUYPjecPC1Pahk/9FDeb3oHSA7Di+cDXsDqtjW3TrxHVRMoRQCVMNCtMmkkIHT5ReckDlSBoCXHG2g5nrd/DEfYwYiPt2hEegGYNlFJKfyk7Az7YpZSPAI/4af8M+MxP+15UdFW3p7rOyYXPfONVrKZZf0V9tfpyAOxdrH5+710ZD5dT5ZgKj4EJs9t51K3ATAK36wsV7utIViuiq2oh65SeuWbBH26hEcAe3xNwJPt3PAPsW64+ex8X+PyqQqXpFuxQi+uAPvGmptHMO2uBp1QwFXlKQNQbGsel/w5m9P5pJscaKBPVv7/N5hdnDHX7ODSKHpT3oOvZk19BeU0DJw1O4d4Zw3nrpinNn2RGH1kT/BXugSV/UY7vlS/CH5NVxb3UIcH5Mjoa63oPMyFcpKFR9eREhb5II9FeT9U0QL3ZVxb4P1ZxVH3WVfk/LqUSGr2MJVnluYBH0zALhwWkcLdn++uHlA+irhIcKSrMubXUN7/+4swRajHtxc99665KqFFoodGOmFk7f3feSH4+bQgnDQ5igZv5NnXNu8r0BPD0BFjyJ9i1CBYYbYfXuNdIdDlWTaK3sYLdLTR6UKbX5ujpPg1QPjGrX8KKaTIy3/59qatQPoh0w5xZoYSGWQK22ep4BTs9CQizlyvfX10lRMQ0fV5zRCd6tgMIkD/MHMOPJ/Rjf2EVb63c37b7GXy7u4AaS0bf7ooWGu2IWV0vM6UFb55H1oItQkUkjfZ5e3rrMu/9UHEwWx+SCca6TvOL3BJ/S3fHDBrs0ZpGSmBNo9IQGoE0DVPYxPdVLxPlSjPpbXGEN0nBTvW9GHmR2s/fqQRReBuFxhn/50ns2UQo+p9/rMxuZTVtjzz8dncB17y0kueX7Gm+c4ijhUY7cqCoiiRHuHfq8qaoLIRVLymbsD3Ss2rVyh2eFOoho2lY8c1n1RMT9wXEEBr2nuzTSFEPf5/UGzjrPUKhvhmh4UhRCQvdmobhCG/Kp1FdDIfXQe8xcMUbMOYSJaTaQ9OIiofT7jXuUxKwW6RdJeSsrmu7dvDFFjX3nuBc11lu24FnF+/mnTUHiYuyk5Xagn/oz+5Wqr0ZsmpdgJR5knL8JWVBRJyqkTEgBGtPxxsL+E1TzbFknjLp6eYpV71aFW6adVxOOGpJFFgXwDxlRk45UiC2l9unERNp57fnjmichNPKhrfV//zkm9V+bC9lDotJb7vQAM9cnpsCD/jJjmsQE2Gnsq7tmsa2XBWCXx5Aa7nznfX0TYjm7nP8vDiGGFpotJGdR8t5bOEO9/7tZwRIHmgipcqKuvQxlaFz/LVwxgOe4zd8DuVH1JuVyez56p86fUT7Dr49MCNRzDfRY8k8ZdKjzVOGXy5/B2QagR1L/wpLH1XbYeFNaBqm0EhWYa77v3cf+ulpg9UajKIC9XLkS9E+pbWakVkxaco0VZkPae3wPYiyRFAV7lFrOPzgiPSsWm8LFYawOFxS7ff4+2tVBGV3EBraPNVG/vjxVlJjI0iNVWF5Z4/q3fQJK56Dd6/3pHQ+/X7vRIIDpnoLDICMiWpBXShhht260zeYQuNY1DR6sHmqr1HK9as/qE+XU2WKtR731TTqa1SpVbd5KtnQFHKV8Ck9pNqfmQhPjfN/3/Icz3oKUOeDyojQnpoGeFKt+8ERYaeqjZrG3xbuYGuOygp9pKSaF5bu4S+fb2/TNbsSrWm0ksraBhwRNjYdLuW84/rw0MzRHCqubt48tftLlWbjhLnqLa27lkW9dZVaY2Jimqd6sn0/ED1Z00gfAeOu9az2f+NiyFnvOd77OO/1FADvzVUrrk0iE5RPw1kHzxpLsnzXIvlSnuNdSTLWMGVJF0S0w+87ZTDMeh4+/Jka63GX+s1f5YiwBZWDqrrOyW1vreWmUwd5VdjceKiEZxZ7QocPFVfz6AIlMH49YwTLd+Wzpy2VC7sALTRawfbcMmY8sZw/XDSa0up6RvSOw24LC86fcXSrqud98q86fqAdie8CPrO+hGgmIqYnkThAldK19fDFX6lDYH2x8mvsW+p9LDLOY56qr1ELVa0CA5Qm7ZtRtrbCe9t3/VF5rrcPzxo5GNFOa5XGXa00n2+fgKOb/S5SjImwu0Ppm+Lf3+3jq+15xEXZvYTGp5ty3NupsREUVHgEkJSS6172zjlXXeckurmV8l2MNk+1ECkln25U/wh//0L5Mob3DiJVSN42eO8mpaKbi516Ehc/D1N+FnpmtI7kJwvh2vd7fu0QMwHlNh9hMHeRMhU561RhsEd6qTVG/oj1MdsetFRQMNOnm7hcStOwauGpQy3XapzSvNUMP1d9mgsVfXBEBOfT+G63MsUlx0QipSTrN5/y5Je7KKn05K86rp+36baitrHZK7/cf2qTUEILjRawLaeMWc99x9NfK3WzrKaBMAGj+jbj/JUS/nOJytUDMOCkDh5pF5CUBec+GjAKpUcS3+fYyLNlCg1rtcjkwao2vWmaqwtgYrnuQ/UZ5yM0cjZ6tn2q+1FdpLIyWwWNEMr/1/t4mPQT2g0zkCNA6G1MpD0oobEnX82/vKaesmolDB7/cicVFn/I8RmJXudYtQ6TXXnluEK8zKwWGi3glv/8wIaDJV5tKbGRza/LKNzjyS815Wc9s8qbpudiLuC0agSmP8vMBBAo0+1go+63r9A4/INnu+Sg9zFrqK6V0+6BW5a3byodt9Ao9n84wtasI7yitoEcI9VIeU0D+RUebaHKok1k+pSzLahorFXMfW0Nr3y7j7UHikO2RrkWGkFysKiK/YVVDEqL4Ztfn87Xd6lSkjNGNxMtVXYEthnZ3n+xVr2NazTdCfPBaq4AB8iYpD5HXaQi5la+oPZ9H/QmvhFPZhlY8NRlASV8so1EiI7mEwu2GTNXWiBNI8JGvVNS1+AKeIm9+R4tq7y23ksYVNZ6tJTYKDtf33Ua8246EVCRVFZuOkWFHr+z5iA/fu47nrU40EMJ7Qhvgv+uPsDHG3J4/IpxbDhUAsDTV40nI0m9MXz3mzOazoApJfxjpNqO66tqF2s03Y3waFXj2wyh/fFLHl9AdBL0neCJqErICJyryiRjMhyyOIBLLZrGu9d7toPIRttm7BEqLUkATcNMqlhV10CE3f93fekOlb13RO84ymsaKDTMTkJ4+y3CbYJBabHERyvLxI5c7yJQvztvJB+uP+JOkLj1SFkbJtZxaE0jAE6X5NfvbeKb3QV8te0ou45WIAQMTvOoxn0To5tOumbN0jlgas93mGp6JkIoM1SlIQwyp3ibiMIdnoduYmbg60y9zXO+SXSyR9PwraQX7ROh11FEJ3lyUC16EN6+xn3ILG9r+in88cXWo0wckMSQ9FjKaxrcmkaYEF6mrQanMjelxEQQaQ9j7QFvQSWEINbiQ6ltcPLO6oNU+nGYdyVaaATAqnKuyi5iR245mcmO5jNzWtn9pWc7bWQ7jk6j6WQi4zzZbH1DjK3rJqylfi96xrvf2Q/B3buglyW0tddoj7+vLMe7f2doGuZ9TKH37RNeIcOmHyK7MECqFOBgcRWj+sQTFxVOeU09hRbzVEWt022NGNlHBcwIIeiXFM2KvZ46JfYw9ULpiLDRYPgyFu/I5973NnLT6xZTXgighQaqgPw/l+6h3qnslqXV9dz6liohOSg1hvfXHubzLbkMC6YKn5XdX6r48nP+BFNvbe9hazSdhzURpa/QsObeMn0aA0+FCdd59wsLU4v0kixrLhIzPenJN/7X0y5snZddIDpR+TQq8j1tDerBb1oWPtpwhP+uPoDTJfnr59s5WqbG3OB0UVpdT1JMBHFRdgoq6txOcadLUlBRy4/H9yP70fPpb3GEJznU73DO1AFcMyWT936mIipj/NQYySmt4XBJNVe9uILSEChBq4UG8NjC7fx5wXbeXqXU5Ps/3MzOoxWM6RfPlZM9b04PXNCC9RUNtZD9jbL9Tr21fVaxajRdRaTlhamR0LA4uU3tIKwJd6nVhBXfT5VdLTkAy/9muaaj88y5jhSV0+qw5Y3eqBWSGhtBdLiN//1wiF+/t4mVewt5bske7v9wM6BeMKVUJieTd3845HX5mMjGv4u8ciVYzhrVi0cuPo6x/RPVUCL9WzKeXbyb7/cW8vHGI62eZntxzAuNXUfL+WSDUov/b/4Wlu7MZ/W+Ii4c25dPZkUy3bYWgYu0uEivN4Vmyd8ODTXQP4jqfRpNqGMVGvZI72NWTWPodJg0Fy58MvC1YnsrLeL0+5UjGuCdOd59XJ34Rp2QoUxkRzd72ozFfkIIxhkPdPDUzGkwrBJmipGkmAjGWBbvDU33+Hxi/QiNSyaoMObxmd4mOH8CprK2gVDyhh7zQuP5JXsor23ghWsnkhAdzpxXVpFbVs1Vrk/h5bPJWnQjd44o5cXrWri2wlwI1VT9ZI2mu2AVGr5ahFWLjkqAC/7RtEM8LAx+c0CtuzDTzxxZ693nR3e0bbwtISFDpULJ/tbTZlkh/sK1E7nvPOWTNJ3XZqoPU2gkOyK4aGxfThmqsgL3SYxm0gAlECL91A25/YyhbPnDOY0ESoyfFCLVdU630hUKKzeO+ZDbHUfLOW1YGjPG9OZwSTUPfbKVLJHLSbsec/f5xaRoyAzSKVdhqLnr/gP2aB1mq+kZmELDFtnYbGRN2NjSvFC+WssNn6uV5p2ZWcCsCbN3saoUmLNBra8ySHCEMy4zEYB31ijTU6Rdjc8sqmQ6u3vFq4Sd8VF2zhqZzpr9xX6LOIWFCb9ahb+66ZV1DZ4aWL7FsLqAY1poOF2SXXkVnDRYOe/mnjyQSyb049uvPgLLglWzTGWzSAnv3wh7l6j9CXOOrbQamp6L6Qj3l5zRKjTCWmi8aBSJFdP53xlzxTuoCK/5t8KK52HiDWBTj8j0OG/hZobBFlZ6C40EYw1GXFQ410wZQJgQzBrfL+ihxPj4NCJsYdQ5XdQaiwu7XmQcY+YpKSXPL9nDu2vUYqIDRVXUNbgY2isOdiyAbZ+Q6Ijg/CyfEwMkM/Pi6Fb4Q6JHYEDTdl2NpjthCg1/C9zakhreN5V+e9TKaClmGeVRM2HQaXDq3SofVqlnpXp6nPc4v9h6lNe/z6bEiGZKdChhkWgIjehwG7YwwbUnDvDr0wiEr/Zx3VQVaWZqK7X1gVemdxbHlKYhhOCrbUdxVRVx6aAGDhTF8gvb+5y76h+QZ0RO/L7UEzd+6b9h0QP+hUZ1iVr5GtcHPr7ds5AvdbgqTJMxSS/m0/Qc3OYpP0LD9GmYKTlagq8Q6gqh4UiG29dBYpbaN4VI2RFlXm6oJXrRfaQxnkEDB7Etp4yymgYemL+Fn546iAh7mHv9lunrkK3UCaqMtCOj+sTzy7OGUlKthJJZcrY9Ss+2lWNKaADMGt+PsxdchXiqhNJTP+au8P+BJaUOFflqkVFELIz5MXz/jLu2sRevXaCc3Ve/A5veVW1h4fDzFS1X0TWaUKcpoWFGT7VmMZ7Nx6fRFUIDvH2Ppo+j1Hh53PYxrP4Xq0+8Bjnzak7562LKjPKtZTUNxEd5HqPCeFFsrethUpb6HT5+xTiG945zl2EoNjQaf/6RzuaYExpnxe6nlygBIOrAssYdDq5UmoZZNSy2NxRnN+5nRkdtfs/T5qrXAkPTM2lKaJgPft/CXMHQKHw3BNYzxfdVn0V74fcJnpK3KKEQYfd8x8tr6r2yXIeZUU6tlBrThqez50/nYbOsEAcoMOpstEe98rZybD3hXE56Lfypezd6zwIKSVK1AUxWv6QW5ZmhsrHpqnCSycoXocCSU2rjfyHjBLXy+8wHOngCGk0XYQoN34c8eHJGtSZXlK8QCoXAkYgYZWpb+5raP7JOfRpzf3nOCQw3skMcLKoizqJpmDUzrNX7WoopMMAjNAorldAIBfPUsSU0wmyICbPdu6fYNrM7+jjIVKmKSRmiwu6qi2Do2aotrrfyXTjr1arVBffAy2d7XzdtOPxyI5xyVydNRKPpZNzRU35qxww6DYacDef+peXX9SeEQoG0Eap6oBVDoxqYGsPd5wwHYMOhUuIsmsbEAUn8cP9ZnHtcH9oDMwS3xnCAh4J5qlmhIYR4RQiRJ4TYbGm7TAixRQjhEkJM8un/WyHEbiHEDiHEOZb2GUbbbiHEbyztA4UQK432/wohOrbg8ql383Xs+e7dAePPhPMeg4v/CXM+htPvgzGXwgijj1nQvuwwvHWF2q4u8r5m0sAOHbJG0+VEmULDz0M+Igau/R+kDG58rDlCtb76Ne+q+jfWjA4NNe7NqYNTiDIW7Vk1DVCF2doL37Qi3cU89Soww6dtM/BjwMspIIQYBVwJjDbOeU4IYRNC2IBngXOBUcBVRl+AvwCPSymHAMXA3NZNJUhs4Zw0+2H3bu/jTlf/9GOvVLbM0+6FS1/2JEszS05ufh/ytnpfK8x4w9AL+DQ9HbdPo5kqlS0lVDWNqHglBBMtyRVrPfUtYiPtTBumXih9hUZ74vBZIb49t4xvdxe4k6t2Bc0KDSnlMqDIp22blHKHn+4zgbellLVSyn3AbmCy8bNbSrlXSlkHvA3MFCrU4Azgf8b5rwGzWjuZYIlK6uvZ6dVMmg+ziL1ZZGbabz3HzEI08cEv3tFouiVN+TTagj/NJZQwLQ0ANd5Fkcb0U9pXWAeG1kfZvYXG0bJarnlpZZeWgm1vEdkPWGHZP2S0ARz0aZ8CpAAlUsoGP/0bIYS4GbgZIDOzidw2zREeBdd9oIrUNxftFGcIjV2L1OdJv1C2zrg+MOWnSn3NOKH1Y9FougPhDhBh7W9Osgqh2R+177XbA2edZ7vWW2gMMZISmqnQOwJ/9XtiI+0tq+vTznSrkFsp5YvAiwCTJk1qm6gdfEZw/WJ7qwJK+dvUfkSM90rvk25r0zA0mm6BWb2vI81Tg05r32u3B8ddprI8RCV6NI36aqjMZ0i6ihbzTTHSnkTaG7/UNlliuhNo7+ipw4CldBcZRlug9kIgUQhh92kPHWx25SjXaI51HCkQ0cJCZM0Rqo5wk/6T4bbVkDrUo2m8MweeOI4hqQ7emDuZBy8a3WG3DwvzrAsx/RsRfgRJZ9Led/8IuFIIESmEGAgMBVYBq4GhRqRUBMpZ/pFUK2AWA5ca588B5rfzmNqONj9pNHDpKzDt1+17zVB1hPsSlahKwkoJuxaqtrpyThma1qLcUm2hf5Ja+Ojq4ky3wYTczgO+B4YLIQ4JIeYKIS4WQhwCpgKfCiEWAkgptwDvAFuBz4FbpZROw2dxG7AQ2Aa8Y/QF+DVwpxBiN8rH8XL7TrEdCI9S+f11AkLNsUzf8U3XyWgNoe4IN0keqGpu7Fzoaasu8WzX16jV48v/3v73NmRERlJ00/06iWZFpJTyqgCHPgjQ/xHgET/tnwGf+Wnfi4quCm3O/mNXj0Cj6Xl0l7Q7aSPU57wrPG3VxZ5652ZS0xUvtPsiXzP5oVtodHF+9G7yF9NoND2aIWd19QiaJm1447aaEs+2UVO8I8xtZnRt7wQlNDJTujY/V7eKntJoND2Qe/d1XXbbYIlJU1l8q4s9bdZtU9PoAKFhJj8c3juWp64az6lGSdmuQmsaGo2ma3Ekh75DXAgl3GY+52nzEhpGUtMO8NGYmkZUuI2LxvYl0dGzQm41Go2mZyKEd/p30xFeVwULjKgyozwse5dC3vZ2vb2/+uFdQWiMQqPRaLoDvS1ph0xNY89X4DKSWtSWq4zYr1+k9u/ZC0c3QcpQSGhbuiHfPFRdhdY0NBqNJlgSMuD+fJUpwhQaJZYMSWYZaJPsZfD6THjzsjbfOroLU4dY0UJDo9FoWoI9QjnFzeip4my1Uv7kO5UgqbDUj15mrNvI2wINtW26rdY0NBqNprsSneTxaRRnQ1KWUSNdwpuXevod3eTZnncllB1p/S210NBoNJpuSnSiR2iU7FeL/EbPUvtm+K0bI3X6nq/h41+2+FZZxroM3zTpXYUWGhqNRtNSopNUBU8plUnKkaJSrFzysncfUOlXTKoKWnyrd346ldd+MpmwsI6r29EStNDQaDSalhKVqEpAP3E81FZ4ilRZV7b3GqM+rZU9zSirFpAeH8Vpw9JaP9Z2RgsNjUajaSmmFlF6AOorISLWaE+EPmPVdsoQ9RljWcFdcqDThthRaKGh0Wg0LSU8ynvfmgZl7iL49X5INEoICZvKkg3KlOVsubYRSmihodFoNC3FGlYLEBnr2bZHKo3D1EZqSlSW7OlG8u/6ys4YYYehhYZGo9G0lPHXeu/7q2iYdar6HHmh0cfITlunhYZGo9EcW6QNh+ssJYWsmoZJ6hB4sASGn6v2Tb9HXVWHD68j0UJDo9FoWkNMumc7wo/QAJXk0N3H8HvUVXTcmDoBLTQ0Go2mNcRahIY/TcMXt9DQ5imNRqM59oixrJ0IpGlYCTeERr02T2k0Gs2xh5fpqQWaxpuXNo6+6kZooaHRaDStxfRrtMQ8BbB1vvex8lx460ooPdx+Y+sgtNDQaDSa1nLjl3D+3z1pRJrCqo0Ydb/dvH8T7FwAexe37/g6AF25T6PRaFpL0gA44cbg+prrNAAq89Xnp3fBgZWeFOouZ/uOrwPQQkOj0Wg6A7sl9UiZYYZa/ZJ3H7OwUwijzVMajUbTGVgd5+vfhPydjfvUlHbeeFqJFhoajUbTWThSPNs7P/c+ZovwFHYKYbTQ0Gg0ms7i3r0qtYgIa1z6NSFDm6c0Go1G44MQEJUA+du826MSe4Z5SgjxihAiTwix2dKWLIRYJITYZXwmGe1CCPGUEGK3EGKjEGKC5Zw5Rv9dQog5lvaJQohNxjlPCSFCo6ahRqPRdBRRCZC72bMfFq7aeoh56lVghk/bb4CvpJRDga+MfYBzgaHGz83A86CEDPAgMAWYDDxoChqjz02W83zvpdFoND2LqARPvfD+U+Cad1QNjp6gaUgplwFFPs0zgdeM7deAWZb216ViBZAohOgDnAMsklIWSSmLgUXADONYvJRyhZRSAq9brqXRaDQ9k6gE9ZmYCXO/gMFnGOapkq4cVVC01qfRS0qZY2znAr2M7X7AQUu/Q0ZbU+2H/LT7RQhxsxBijRBiTX5+fiuHrtFoNF2MKTTMeuJmW01p49XiIUabHeGGhtAps5RSviilnCSlnJSWltb8CRqNRhOKuIXGOE9bdCI466C+uitGFDStFRpHDdMSxqeZsvEw0N/SL8Noa6o9w0+7RqPR9FyiEtWnVWiYgiTE/RqtFRofAWYE1BxgvqV9thFFdSJQapixFgLThRBJhgN8OrDQOFYmhDjRiJqabbmWRqPR9EwcyerTyzyVqD5D3K/RbO4pIcQ8YBqQKoQ4hIqCehR4RwgxF9gPXG50/ww4D9gNVAE3AEgpi4QQDwGrjX5/lFKazvWfoyK0ooEFxo9Go9H0XCZcD72Og1iLmb2baBrNCg0p5VUBDp3pp68Ebg1wnVeAV/y0rwHGNDcOjUaj6THEpMCw6d5t0YnqM8TXaugV4RqNRhMKdBPzlBYaGo1GEwq4hUZom6e00NBoNJpQICpefWrzlEaj0WiaxRauSsL60zRqyuDrh6G+pvPH5YMWGhqNRhMqBEolsvY1WPYYrHi2s0fUCF3uVaPRaEIFM5WISdFecLkgJl3tH1rTNeOyoDUNjUajCRWiE719Gk+Nh2cmQphN7eds7IpReaGFhkaj0YQKvpqGiatBfZZ1fZYlLTQ0Go0mVIhKhMLd8PsE2LnQ0+6sNzYkvHsD1FZ0xegALTQ0Go0mdIhKgAYjy+3Hd3jaXfWe7S3vQ3h0547LghYaGo1GEyqYqUQAynM8284Gz7YtwuPj6AK00NBoNJpQwUxa6ItV07BFds5YAqCFhkaj0YQKZioRX1wWTcMe0SlDCYQWGhqNRhMqBNI0nFrT0Gg0Go0vVp+GFS9No2uFhl4RrtFoNKFCc5rG2Ktgqt+SRZ2GFhoajUYTKgT0adQrs9TFL3TqcPyhzVMajUYTKlg1DasAaahVWXBDAC00NBqNJlSIiPFsx/f1bNdXQVhoGIa00NBoNJpQQQjPdt8Jnu26Kq1paDQajaYJznsMeh2ntuurIUwLDY1Go9EEIsIBJ/xEbddXgi00zFOhMQqNRqPRKH6+0uO/MLWLuqqQ0TS00NBoNJpQIn2EZ9tmpAypr9aOcI1Go9E0g2mSqq/UjnCNRqPRNIPWNDQajUYTNKbQ0CG3Go1Go2kWU7uoDx1HeJuEhhDiDiHEZiHEFiHEL422ZCHEIiHELuMzyWgXQoinhBC7hRAbhRATLNeZY/TfJYSY06YZaTQaTU/B1DRc9SETcttqoSGEGAPcBEwGxgIXCCGGAL8BvpJSDgW+MvYBzgWGGj83A88b10kGHgSmGNd60BQ0Go1Gc0xjNUn1AE1jJLBSSlklpWwAlgI/BmYCrxl9XgNmGdszgdelYgWQKIToA5wDLJJSFkkpi4FFwIw2jEuj0Wh6Blah0QN8GpuBU4QQKUIIB3Ae0B/oJaU0K6LnAr2M7X7AQcv5h4y2QO2NEELcLIRYI4RYk5+f34ahazQaTTfAql109+gpKeU24C/AF8DnwHrA6dNHArIN4/O954tSyklSyklpaWntdVmNRqMJTWyWeuA9QNNASvmylHKilPJUoBjYCRw1zE4Yn3lG98MoTcQkw2gL1K7RaDTHNj3Mp4EQIt34zET5M94CPgLMCKg5wHxj+yNgthFFdSJQapixFgLThRBJhgN8utGm0Wg0xzYRsZ7tENE02moke08IkQLUA7dKKUuEEI8C7wgh5gL7gcuNvp+h/B67gSrgBgApZZEQ4iFgtdHvj1LKojaOS6PRaLo/sekQmQC1pSHj02jTKKSUp/hpKwTO9NMuAb8V0aWUrwCvtGUsGo1G0+MQAuwRUAv0GtPVowH0inCNRqMJbezR6nPoWV07DoPQ0Hc0Go1G458r/wO7FkHyoK4eCaCFhkaj0YQ2fcaqnxBBm6c0Go1GEzRaaGg0Go0maLTQ0Gg0Gk3QaKGh0Wg0mqDRQkOj0Wg0QaOFhkaj0WiCRgsNjUaj0QSNFhoajUajCRqhUkJ1P4QQ+aiEiK0hFShox+F0B/Scjw2OtTkfa/OFts95gJSy1QWJuq3QaAtCiDVSykldPY7ORM/52OBYm/OxNl/o+jlr85RGo9FogkYLDY1Go9EEzbEqNF7s6gF0AXrOxwbH2pyPtflCF8/5mPRpaDQajaZ1HKuahkaj0WhagRYaGo1GowkeKWXI/gD9gcXAVmALcIfRngwsAnYZn0lGuwCeAnYDG4EJlmtlAl8A24zrZVmOXQncByQAHwMbjPvd4DOeBUAGsBxYb/wcAT4MhXkCp1vGtR6oAWb5mecI4HtU5eG7/YznBeBHwGXGeFzAJJ8+vzXuvwM4J9TnbGxPM/psAZa2ZM5AFlBtuc8LoTjPpv62wCtAHrDZzzhPBP4FpBjjrQCe8enzOZ7vxguArZO/w381rrHN6CMsx34DXGPZvwSQNP6//QH1Pf8U2G5c71HL8VuATcbv+BtgVBc/t5qdMzAA+Mo4dwmQEeC59Sbq+7rZ+F8It3wvSi3/Ww80Ob/WPug64wfog+dLEwfsBEYZv8jfWH5xfzG2zzN+QcL4Eqy0XGsJcLaxHQs4LMdeAyYCv7NcKw0oAiKM/WhglZ8xvgfMDpV5Wq6ZbIzf3zzTgROAR/AvNNYDNmAkMNz43VkfoKNQD49IYCCwhyAeIF0850TUlzjTaE9v4Zyz8POwDcF5BvzbAqcCE/zNA/gD6kEbA5yMenj6Co1441Og/u+v7Kz5AycB3xp/IxtKME6z3GcxkGa5zzJghc/fcCDwEeAATjfaIlAvgeda52hsXwR83lV/82DnDLwLzDHazgDesPRxP7eM+wjjZx7wM6N9GvBJsPMLafOUlDJHSrnW2C5HSdt+wEzUlwTjc5axPRN4XSpWAIlCiD5CiFGAXUq5yLhWhZSyCkAIIYBxwFrUm0mc0RaL+mI2GNeehnqQuBFCxKP+SB+Gwjx9LnspsMDfPKWUeVLK1UC971iEECOBnVJKp5Rym5Ryh58hzwTellLWSin3od6QJofynIGrgfellAeMe+a1cM6tIpT+tlLKZaj/aX+cCXwppayUUn6D0mR8zy8zNu2oh22zUTTtOH8JRBn3jQTCgaPG/ONRL3f5xjUeAv7iZw4zUEKgSkq52BhTHer/I8NnjqAEaLNzDIE5jwK+Nq612LieyTSM55aU8jPjHhJYZc65pYS00LAihMgCxgMrgV5SyhzjUC7Qy9juBxy0nHbIaBsGlAgh3hdCrBNCPCaEsBl9xgMbjF/kM6g3zSMoFfUOKaXL6HcuSj23Mgv4yucfrU20cZ5WrkS9TZhY59kU/ubpSzD3D5pOmvMwIEkIsUQI8YMQYralXzBzBhho/P8sFUKcEkR/L0LgbxtoXKlAvZSyNIi+C1EmrnLgfy28TxatnL+U8nvUAzHH+Fkopdxm9DkLZZ5BCDEB6C+l/NTPEGbg83cWQiQCF5rnG223CiH2oDSD21syR186Y84orf/HxvbFqBffFGO/0f+2ECIcuM6nfaoQYoMQYoEQYnRTc+oWQkMIEYtSh3/p+4A2vijNfVnswCnA3SjVfRBwvXFsBko1BDgHZaboi3pze8aQ6KDs3d/4XPcqvL+8baId5mlepw9wHLDQ0mydZ1OcQ3AP0HahE+dsR5lvzkfN8f+EEMOMY8HMOQdl2hoP3Am8ZfnfCGZ8ofC3DcR0lL+vWaSU56DML5EoLTso2jp/IcQQ1AtdBuohe4ZFcM8AFgghwoB/AHf5OT8CZevfa2mzo76/T1nbpZTPSikHA78G7g92jn7u2eFzNrbvBk4TQqwDTgMOA07jmL/n1nPAMinlcmN/LSof1VjgaZqxnIS80DCk4nvAm1LK943mo6bKbnyapobDKCeUSYbRdghYL6XcK6VsQP1SJhh9rF+YG1AmDCml3A3sA0YIIQYBBw1V1hxXKsok4++NpqvmaXI58IGU0mqiaPbBIIRwAIlSyiPNDLe5+wdFJ8/5EOpNrVJKWYCyeY8Nds5SmeIKje0fUH6cYU2d00XzbA3BaloASClrgPl4m0EC0k7zvxhYIZVpuQL1wJxq9JmMMrfEAWOAJUKIbJR/4CMhxCTUS6Pvw/NFYJeU8okAQ38bjwmpRXTinJFSHpFS/th4obnPaCsJ8Nx6EOUHudNsk1KWGddHSvkZEG483/wS0kLDsNW+DGyTUv7DcugjYI6xPQf1D2y2zxaKE4FSQx1cjbITmpkdzwC2CiESUL6OQqP9AMq2ixCiF8ohuhf/X6pLUc6jRrbfLpyniZcG5GeegTgdpQ43x0fAlUKISCHEQGAoxj9wsHTBnOcDJwsh7IagmIKyNQc1ZyFEmmnSNL6MQ1H/G6E2zxZhjO94lIbdVL9YywPPjtLYtgd5/faY/wHU27TdeCCfBmwzTCnbpfJHlUopU6WUWVLKLJQj/CIp5Rp8tDEhxMOoKKpf+ox3qGX3fFSkU4vozDkb90s1tCxQUY2vGNtezy0hxI0orfoqi9kdIURvY8wIISaj5ELg/yfZwsiAzvxBRXFIVCjZeuPnPFRY4FeoP+iXQLL0RHU8i3oL3IR35MTZxnU2Aa+inEuXAr+39OmLemPbhApLu9Zo/xhLiK7RtgSYEYLzzEK9pYRZ2nzn2Rv15l0GlBjb8SifjjU642LjWC3KAbfQcuw+4/47MCJPQnnORts9qAiqzSiTAcHOGRVZtMUY51rgwlCcZ6C/rXFsHsrMVm+0zwUmAa/6jDkb5TCvMPqNQtnfVxvz2IwyY9g7a/6o6KF/4gmZ/4fRfjdwfYB7L7GcvxqINrYzjDFts4zpRuPYk5a/82JgdFf9bwc7Z+N/YBcqSuslINLfcwsV1LMHn9Ba4DZjzhtQgvakpuZ3TKcREUK8BLwkVcRCoD6RwLeyG6dfDmaeRr+1wBTpbfrolhwrcw52nk2cfz+wW0r5dvuOrHMQQixChbznNNEnA/iXlPLczhtZxxHknDvsuXVMCw2NRqPRtIyQ9mloNBqNJrTQQkOj0Wg0QaOFhkaj0WiCRgsNjUaj0QSNFhoaTRAIIZxCiPVCiC1CpVu4yxIbH+icLCHE1Z01Ro2mM9BCQ6MJjmop5Tgp5WjUmp9zgQebOScLlShRo+kx6JBbjSYIhBAVUspYy/4g1IKxVFQ9gzdQWVEBbpNSfieEWIHKHbQPldX0KeBRVObRSOBZKeU/O20SGk07oIWGRhMEvkLDaCtBpZopB1xSyhojDcU8KeUkIcQ0VE2LC4z+N6PqeDxsLr4CLpMqvbxG0y2wd/UANJoeQDgqI/I4VHbRQIkMpwPHCyEuNfYTUDmstNDQdBu00NBoWoFhnnKiMpU+iMpTNRblJwyUxFIAv5BSLgxwXKMJebQjXKNpIUa25BdQ5VAlSmPIkSpz6HWoRHOgzFZxllMXAj8zMpYihBgmhIhBo+lGaE1DowmOaCHEepQpqgHl+DbTXj8HvCdUNcDPgUqjfSPgFEJsQGVWfhIVUbXWSEWdTyvrNWg0XYV2hGs0Go0maLR5SqPRaDRBo4WGRqPRaIJGCw2NRqPRBI0WGhqNRqMJGi00NBqNRhM0WmhoNBqNJmi00NBoNBpN0Pw/zrKGsGG9y+0AAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 先观察一下指数的走势图\n",
    "df.loc[:, ['DJIA', 'FTSE']].plot()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<AxesSubplot:xlabel='Date'>"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYcAAAEGCAYAAACO8lkDAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAABOwklEQVR4nO2dd5icZbm473f69p66IZseEyCUJDTp0pGiyC+oyEE9iIJYkCNWLKAczrHgUQ6ioIgKAoKiNOmHFiCFQAohPdlsstneZ2d29v398ZX9pu7sZndnZve5r2uvnXm/Mu875Xu+pyutNYIgCILgxJXpCQiCIAjZhwgHQRAEIQ4RDoIgCEIcIhwEQRCEOEQ4CIIgCHF4Mj2BVFRWVuqamppMT0MQBCGnWL16daPWuupgzpHVwqGmpoZVq1ZlehqCIAg5hVJq18GeQ8xKgiAIQhwiHARBEIQ40hIOSqmvKKU2KKXWK6XuV0oFlFK/V0rtUEq9bf4dYe6rlFK/UEptVUq9o5Q6ynGeK5RSW8y/K0ZpTYIgCMJBMqjPQSk1HbgOWKS17lFKPQisMDffoLV+OOaQc4B55t8xwP8CxyilyoGbgKWABlYrpR7TWreMzFIEQRDiCYfD1NbWEgwGMz2VEScQCFBdXY3X6x3xc6frkPYAeUqpMJAP1KXY90LgD9oo2rRSKVWqlJoKnAI8o7VuBlBKPQOcDdw/3MkLgiAMRm1tLUVFRdTU1KCUyvR0RgytNU1NTdTW1jJr1qwRP/+gZiWt9V7gv4HdwD6gTWv9L3PzLabp6GdKKb85Nh3Y4zhFrTmWbFwQBGHUCAaDVFRUjCvBAKCUoqKiYtQ0okGFg1KqDEMbmAVMAwqUUp8EvgEsBJYB5cDXR2JCSqmrlFKrlFKrGhoaRuKUgiBMcMabYLAYzXWl45D+ELBDa92gtQ4DjwDHa633aYNe4HfAcnP/vcAMx/HV5liy8Si01ndprZdqrZdWVR1UDocg5DSvbm2krrVn2Mc/sqaWjmB4BGckTCTSEQ67gWOVUvnKEFOnA5tMPwLm2EXAenP/x4BPmVFLx2KYofYBTwNnKqXKTG3kTHNMEIQYtNZ84rdvcOGvXh3W8Zv3d/DVB9fx9b++M8IzE4bD/v37WbFiBXPmzOHoo4/m3HPP5f333wfg5z//OYFAgLa2tqhjnnzySZYuXcqiRYs48sgjuf7668d0zun4HN4AHgbWAO+ax9wF/Ekp9a45VgncbB7yBLAd2Ar8BviCeZ5m4IfAW+bfDyzntCAI0bQH+wBo6Ogd1vHNXSEAnnh3P209oj1kEq01F198Maeccgrbtm1j9erV/PjHP6a+vh6A+++/n2XLlvHII4/Yx6xfv55rr72WP/7xj2zcuJFVq1Yxd+7cMZ13WtFKWuubMMJQnZyWZF8NXJNk2z3APUOZoCCMFNfdvxav28VPLl2S6akMSkPHwTkZDziOv+7+tdz76eUp9hZGkxdeeAGv18vVV19tjy1ZYnwHt23bRmdnJ3fccQe33HILV155JQC33XYb3/rWt1i4cCEAbrebz3/+82M676yurSQII8Xe1h4eW2dEYF9z6hxmVxVmeEbJifRrvv+PjQDked3DOsf+tgHhsKe5e0TmNR74/j82sLGufUTPuWhaMTd9eHHS7evXr+foo49OuO2BBx5gxYoVnHjiiWzevJn6+nomT57M+vXrx9yMFIuUzxAmBK9uabQfr93dmrmJpMGbO5p52ZxvgX94wqG+fcActXBq0YjMSxh57r//flasWIHL5eKjH/0oDz30UKanZCOagzAhaO0J2Y+vf2gdu5u7+coZ8zM4o+RY/gKAAv/wfqL17UFmVxWQ53XTG+4fqanlPKnu8EeLxYsX8/DDsYUk4N1332XLli2cccYZAIRCIWbNmsW1117L4sWLWb16tW1+ygSiOQgTgvaevqjntz+3JUMzGZzalgEzkNs1vDj2+vYgk4sCBLxuevtEOGSS0047jd7eXu666y577J133uG6667je9/7Hjt37mTnzp3U1dVRV1fHrl27uOGGG/jRj35kRzT19/dz5513jum8RTgIE4L2YJjS/JGvPzNc2oNh3tyROFivtsXIbaipyKcnFBnW+fe3B5lSEsDvcREMD+8cwsiglOLRRx/l2WefZc6cOSxevJhvfOMbvPjii1x88cVR+1588cU88MADHH744fz85z/nsssu4wMf+ACHHnoo27dvH9N5i1lJmBC094QpDnhp7c6OsM4v3b+WFzY3sO67Z1ISI7RqW7pZPK2YZTXlPLrWyBN9blM9MyvymTtpcP+B1poD7b1MKvbT2h2iI9g36DHC6DJt2jQefPDBQff76U9/aj8+//zzOf/880dzWikRzUEY12xv6OSp9ftp7g5T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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "df.loc[:, ['CAC']].plot()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<AxesSubplot:xlabel='Date'>"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYEAAAEGCAYAAACD7ClEAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAABLcklEQVR4nO29eXzcVbn4/z6zT/akSfclbWkpbWlLKWXfZOcqiCiyXBDEH3iFexFRviJeQcXrLldcQFTkoggXFa+o7LsghbZQSksXSumSrtnXyazn98dnyWcmM8kkmSSTzPN+vfrqZ85nmXMyM+c5z3KeR2mtEQRBEAoT12h3QBAEQRg9RAgIgiAUMCIEBEEQChgRAoIgCAWMCAFBEIQCxjPaHQCorq7WtbW1o90NQRCEMcXatWsbtNY1Q3lGXgiB2tpa1qxZM9rdEARBGFMopXYO9RliDhIEQShgRAgIgiAUMCIEBEEQCpi88AkIgiBkIhqNUldXR3d392h3ZdQIBAJMnz4dr9eb82eLEBAEIa+pq6ujtLSU2tpalFKj3Z0RR2tNY2MjdXV1zJ49O+fPF3OQIAh5TXd3NxMmTChIAQCglGLChAnDpgmJEBAEIe8pVAFgMZzjFyFQwOxo6OTlrfWj3Q1BEEYREQIFzCk/eJEr7ntjtLshCHmPUoqbbrrJfv2DH/yA22+/HYB77rmHBx54AIBTTjkl7cbXkpKSrN/rscce4zvf+c7QOjwAxDEsCILQD36/n0cffZRbbrmF6urqpHOf/exnc/pe5513Huedd15On9kXogkIgiD0g8fj4ZprruHOO+/sde7222/nBz/4QVJbIpHgyiuv5Ktf/WpSe0NDA8ceeyx///vfqa+v58ILL+Soo47iqKOO4tVXXwXg/vvv5/rrrx++waQgmoBANJ7A65b1gJD/fP2vG3l3b1tOn7lwahm3fWRRv9ddd911LFmyhJtvvrnP62KxGJdddhmLFy/m1ltvtdsPHDjAeeedxx133MEZZ5zBpZdeyo033sgJJ5zArl27OOuss9i0adOQxzNQRAgUKM7a0uGYCAFB6I+ysjKuuOIK7rrrLoLBYMbrrr32Wi666KIkARCNRjnttNP42c9+xsknnwzAs88+y7vvvmtf09bWRkdHx/ANIAMiBAqU9nDMPu6Oxinxy1dByH+yWbEPJ5///OdZvnw5V111VcZrjjvuOF544QVuuukmAoEAYJiTjjzySJ566ilbCCQSCVatWmVfM1rI8q9AaeyI2MfhWGIUeyIIY4eqqiouuugifv3rX2e85uqrr+bcc8/loosuIhYzFltKKe677z42b97Md7/7XQDOPPNMfvKTn9j3rVu3blj7ngkRAgXKvtaQfdwdjY9iTwRhbHHTTTfR0NDQ5zVf+MIXOOKII7j88stJJIxFltvt5qGHHuL555/n5z//OXfddRdr1qxhyZIlLFy4kHvuuWckut8L5bQNjxYrVqzQUlRmZHlk9W5u/tN6AB7/jxNZOLVslHskCOnZtGkThx122Gh3Y9RJ93dQSq3VWq8YynP71QSUUvcppQ4qpTY42m5XSu1RSq0z/53rOHeLUmqbUmqLUuqsoXROGD52NXXZx90x0QQEoVDJxhx0P3B2mvY7tdbLzH+PAyilFgIXA4vMe36ulHLnqrNC7tjd3CMEwlHxCQhCodKvENBavww0Zfm884GHtdZhrfUHwDZg5RD6JwwTu5u6CHoN+SyagJDv5IPZejQZzvEPxTF8vVJqvWkuqjTbpgG7HdfUmW29UEpdo5Rao5RaU18vScxGgr+s28N1D75JQ0eYXU0h5k0y8pmMV03g9e2N/Oof20e7G8IQCQQCNDY2FqwgsOoJDFco6WCDw+8Gvglo8/8fAp8eyAO01vcC94LhGB5kP4QB8LW/bKQ1FGXxtHIaOsKcNL+a9XWthMeJJnCwrRu/10150Ki+9Ml7VwHwmRPnjGa3hCEyffp06urqKOTFolVZbDgYlBDQWh+wjpVSvwT+Zr7cA8xwXDrdbBPyAI/LyEn+u1U7AZg3sRTInSbwz20N/HFtHT+8aOmo5H9f+V/PUVPqZ/Wtpye1R2IJfB6Jhh6reL3eYamoJRgM6pehlJrieHkBYEUOPQZcrJTyK6VmA/MAyVWcJ3RGjI0re1qMPQLzJhrmoFz5BC791es8+taeIW8+i8QSxOKDe0Z9e5jLfrWKh97YZbed99NX6HTskBYEoYd+NQGl1EPAKUC1UqoOuA04RSm1DMMctAO4FkBrvVEp9QjwLhADrtNajw9bwxgnntB0RxMoBZZp9ZCJw+MT6AzHCHgHHxR2wnef59DJpfz26qMH9J4Wr25r5NVtjfbrzfvbeWlrPecePiXdrYJQ0PQrBLTWl6RpzrhnWmv9LeBbQ+mUkHu6TC1gdnUx2+s7AZhaYSTBymbHcFNnhNZQlNnVxf1e2xGOMaHEP6h+tnVHOdge5mB7mFAkTtCXnTBp6Aj3eb7OERIrCEIPYigtELoixkQ/xzGJe90Kr1uxt7X/AtbLv/kMp/7gxazeq2MIppcNda328Vu7mrO+r769byGwdmf2z8olq7Y38sKWg6Py3oKQDSIECgTLXOJcySulOH/ZNP60to7mzkimW9l6oN0+dobptYainP/TV1i7M3kbSWc4WbNo6ozwyOrdZMP6PT1CoK072u/1l/1qFbVf/jsfv+e1Pq97auMBVm1v7POa4eDie1dx1W9Wj/j7CkK2iBAoECxNoNYUAl63Eb1zzuLJROIJdjR2Zrz38Xf22cezb3ncnpzf2tXM23WtXHh38gTcEU6evL/wyDpu/tN6ttf3nyt96/4egdPe3bdGobUe0Ap/V+PomYQG6+gWhOFGhECBYJloZlUVc/whE7j3ciPn1ORyYwPKgbbMJqEXtiTHZx9sC7NxbytXOla4Tk2iI0UT+KDBEDD7+3gPiy0H2lk6vRzoXwh0RuJ0RxP2voB0eFyKq0+YbV4/ehFCT208wO9W7eS/Hh/5ylGC0BdSSaRAsBzDpQEPD37mGLt9cpkhBPb14Reoa+piTk2PQ7k1FOHv6/cnXfN2XYt9nBqOGU8YJqS65hB9EU9oth3s4JKVM3m7rjWtb0Frbe9BaDD9AEuml/OP95JT+37ulLnMm1TCBUdMJxyL8+tXPrC1oZHCaTq77vdv2sdfOVcyYgr5g2gCBYJlpy/2J0fbVBX78Lld7M8gBBIJTXNXhAWTS+225s4ok8p6on9cCtbtbrFfd3THeOztvTSaETsRc99AXVPf5ph1u1sIxxIsn1VJwOvqJQQ27Gll9i2P27b9xk7j+ctmVABQHvRSbEYTXXfqIVxwhLHD0ud24XGpEdsr0BqK0tYdJZQh6qpQ0x8I+YkIgQLB0gSKfMnKn1KKyeWBJFNNa1ePTb8lFCWh4dBJPfUGmroidJqr6rVfPZ3qEj8vb+0xGb249SD/8dBb/ODpLUTjCepNYdCfJvDcpgO4XYqT59VQ4vcmmYPer+/gk78wfA8vme9V326YoBZPM8xHtROKmFQWQCkocoSWKqUo8rlHRBOIxRMs/frTfOLu12gyTWTXnpSctmKkNRJB6AsRAgWCrQn4elsAJ5b67RDL5s4IS7/xNHf8zSiAbU1ktdVFfPmcBfY1neEYRT43E0r8VBR5eXNXi/08a6OWx+Wioztmb057v6EzScCk8tymgxxVW0l5kZeygCdJE/j967tswWOZgay9AUunV/C1Dy/knsuPpKbUT4nf0yttRbHfYwvC4eTZTUY46JYD7baf5YiZFQS8PT+1pj4isQRhpBEhUCBYET2p5iCAoM9tmy72mmUnf/XKB2it7QmrqtjHtSfNwed20dwVpSsSo9gsTl8R9KV9z7jWSRP527tbWPqNp9Neu7upiy0H2jn9sEkAlAQ8dDhCRF/YfJCT5tdwVG0lq3c08bW/bLDTX1QV+/j0CbOZUh5kemURE4p79yfoc9tCZDjZ1dQTZfWbV3eY/fMztTxot6dubPvSH96m9st/H/a+CUI6xDFcILR0RSkLePC4e8t9v8dNg1l4vsWxUg/HEjSZdveqYh9KKSqKvGzZ30ZpoMf+Xl5kROdcfNQMLjt6Fn96s46/rd9La1fUFgLzJ5Ww9YARIpouodu7+9oAOKq2CoASv4cXttSzv7WbiiIv2xs6ueCIaexq6mL1jmZ2vLaTCcU+JpX5k55189mHJo3BotjnoWsEfALOTWt/W2+E1s6sKqKy2AdmlFSqJvCHtXXD3i9ByIRoAgVCU2eEqjQrZDBWyVbqiOaungkqHE3QaE5YE4oNR3BJwJicX9pab2sCZQFDCFQV+zh8ejm3n7eImVVFtIacQqDHsXywvbcTujUUtZ8BsN7cOXz7Yxs52GZMrJPLAxwxs9K+p7EzwozKoqTnTCoLcKjDiW1RNEKaQENHhBlVPav+n156BJPLA5QFetZbjRnMQYmEOIyFkUeEQIHQ3BUxVqNpCHhcDiHQs4oOReN2/H9lsTHRf+UcI7yxNRS1/QtmhuokIVNR5KO+PWz7AKxQVEi/J6HNFAJlZsz/h5cYyd72tXXbTutJZQHOWDgp6b7plUGyYaR8AvXtYapL/HxowUQATltg9Nfv6THDZdqdLRXehNFAhECB0NQZoaoogxDw9mgCLY4JKhSN09gZocTvsSexFbU9K3HLv2DtA7A0AjDCNbccaOczD6wB4GPLp/MvZhbPA+bKXmvN7qYutNa0hqIoBaWmdvGtCw7nkytm8N6BdvaZforJ5QFqSv38+OJl9vvMqErWBDIR9LnZsKeNP6zJLn3FYHhk9W5e2dZAdYmfn156BP+4+VQ7AZ7XYbLKtAlOooaE0UCEQIHQ3NmHJuB10R1N0N4d5YfPbLXbu6PxXmak0oAXK/CmyJywY6YQcLtU0r1OKou93PHRxQD2noS7X3qfE7/3Ajf94W3aQlHKAl5c5jPcLsWRsyrpisRZvcPITTSp1NAmzl82jWlmBtRFU8vIhn2mE/lLf1yf1fWD4eY/Gc/e0dBJkc+TJKB8Dl+M5aSPJ7Tt3AboCosQEEYeEQJjgERC8/r2Rmq//He2Hew//04snrAnTovmrmhmn4DXiA7635Qkb6E0QsDtUvaKv8Q0B82pMfIRTSnvMfmkZvUs8XuoKPJS6vewaV8bWmvufuF9AN6pa6U1FO2V/mG2+dx/vt9IwOuiLNhjV//vi5fxk0uO4KxFk/v5axhY2ofTLJVLnKmq//20eb3O+9JoAr94+X2O/87zdvtoprUQChcRAnlOU2eEOV953K6XuyZlck/H71bt5BP3vGanMO6OxglF41QUpc+x4zcLwMRSHJPdkd5CALCfU2Sag64/9RAe+PRKjjuk2r7mmx9dzCUrZ9qvi31G7P6Ziybz5Ib91HeEaTedxntbQry2vTFpkoeejKfb6ztZNqMiKfb/qNoqPrJ0atZlLH9+2XIAEsO0W9cSMv/z6ZWct3Rqr/PTKnqEj+X/WLMjOfmdmIOE0UCEQJ6zKyXVQroQz1SaTGfsP7cZ+XSsuPR08fOAXQVsr2ma+O6FhwOGozKdELBMG9b+AI/bxUnza5KuOWxKGd/+2OH2a8vMc9phE2kPx3jFzPUzrSJIZyTOgbYwqYk2nf11CpTBsHRGBTeePp+D7WHCw+CAtcxfwQwV1a49eS7fu3AJK2dX2ZqA03wGjIjjWhBSESGQ5zSmbCzKFFmyrzVk5+ixppbNZlpmyzQzsTS9KcTazfrAazspC3jsMMyuiOEYThUelrDI1h7vxFrdW/l/5k8qsc9tMvcKWCilOGZOFbOri/nwkt6r64EyzYwk2tfSE53U3BmxHdtDwRICzp3BTrxuFxcdNYOKoNf2Cexq7GLJ9HJbS0mtwyAII4EIgTznYIptPV2MeSKhOfbbz/Pp+43Uzlas/5s7m9nR0GkLgeoMJR+dq1eXSxEwI4GaOiNEYolemoAVb3+4mfK5L+69/Eg73QTArAmGs/T1Dwyz1nxHTP8njpze6/7fXX00z9x4Uq9V82CoMsNcW0xzTGtXlCO++Qzff2rLkJ8d6kcTsCgNeGkLRdFas6upi6Nqq1g4pcx8hmgCwsgjQiDPsTZKLZ9ZAcA9L71v5+e3sATDK9saiMV7Nnh1RuKc8oMX7Tj7mtL0QsBZFL4zHCPgM74WO80iLBPLku+77GjDNDMpCyfrmYsm89mT59qvi3weJpb67WfPm1hq9+27Fy7pdb/H7crKBJYNJX5DCFjZRC1h+bf1e4f87FDE0gT6FgJlQQ/t3TE6wjFC0TiTyvy2b0U0AWE0ECGQ5xxs76ayyMujnzvebvv+U5uTrnFuvnrvYAfNnRE8jpXzu3sNM8uEkswhohbRuLZXs5awSZ3sv3XB4Wz/r3MHMxwAaicYJqHJZQGqzT6V+j2232C4sPY1WLuYrc1ZWfqW+8T2Cfj61wTawzE7tUV50GtndhWfgDAaiBDIY/a1hvi/t/b0suU7k5FBchqGJ97Zxz/fb+Tk+TUsnmaYGdbXtVJZ5MWbYUUd8CRPXNZqdocpBKaU996VO5QJ20rrMHdisb1DOFPfckmJua+hw3TMWg7aXAQMhaLZaQITTW3M8teUB7220JXoIGE0ECGQhzy1cT+PrNnNDQ+vI661XR7xh59YCvReue5v7fEb3PX8NsAwEf3wE8sAIzlbJn8AJMewL59ZYU/I200hkOvYessPUOTz4DIH4/UMrxYA2LmOOiMxwrE47VkUss+W7qjhlA94+v5JWbUPXjUjt8oCXtwuRbHPTVtocJrAtx/fxA+fHrpfQyhMJItoHnLtb9f2HJ88h4uOmgHAhUdO59tPbO5Vw3d/a8hOudBmrm6vP/UQpjhi06dWZM6xY61AZ1QFeeDqo3ud78/EMVCmm32pLvGxYHIpx82dwC3nDH/JRUsT2Ly/neXfeIaKDGk0BkokluCtXc1GBbN+NJoFk0vxuBR/WbcH6MmVVFHkoyU0uDoDv3h5OwA3nXnooO4XChsRAnmGlU3ToiZlBV/id9u247U7mwhFEvx21U5mVRVRUeRj3e4WvnzOAk5fOAmtNcVm9sy+hMBhZnTKHR893J4oLXzDYKY5aX4Nt5yzgIuPmknA6+b3/98x/d+UA/weo8zk71/fBUBnpO9KZ9nw0tZ6PnXfG1lfH/C6OXpOlV14p9wWAt4+C+4IwnAhQiAP2NsS4s9v7eFzp8y1nbgWqeGZRT4PneE4bd1RLrz7Nbv9hxct5ZCaUn79ynY+dsQ0wIizn15ZxJYD7Uk7VlOpKfWz4zv/ktT2wKdXUlnkS0qLnCvcLsW1joihkUIpRbHf00vQ9kcsnsClVFo/yEAEgMV3PraEE7/3AtCTdK+iyJuUxjtbcmnSEgoT8QnkAdf+di3ff2oL79d3smFPa9K5yhSTRbHfTWc4xhbTsWhx3NxqZk4o4uvnL2aiw4Y/ycznk004p5OT5tdw+PTynJlM8gVL03H6SDrCMb79xKaMhegPufUJPv+/63LWB2f661KzzoBhDhrYhB5PaP7lrlfs17HULdeCkAUiBPKAjXuNiX93cxcb9rYy1ZGILTXzp5UXf3PK7tpMUSnLzA1dpQFR+gAazUppl66cYbe1dEX5xUvbeeiNXRnve+ztoe8lsHDmO7K0i4qgN21FtL54ZVtDUlqRgQoRQQAxB406sXgCK2vBjgZDE1g0rZy9Zrrl1BoAxT4Pdc0hNu1vpzzo5WPLp/W5yr/+Q/OYOaGYMxdml21zvGNF8Vx45HT+uLbO/jtDekGai5QS6ZhWEUxKI11Z5KOlK0IiobMOv3323QNJr1u6on1GgQlCOkQTGGX2OzZ6/W39Pt6v72TFrJ7CLRXFyZk/i3yGOWjzvjYWTC7lto8sStqRm4rP4+LjR04f9o1YY4VJ5u7nWROKeyW9S7dpzFkXIRSJ8359/6m8s+HJz5/IG185zX5dUeQloY1In1CW+wUaO8PMrSm2i+y0DMKnIAgiBEaZfY6V6NqdzZT4PVxy9Ex7F29pSrROsd9DR7fhE7CieoTsefKGk1h96+mAke766RtPss91pKn4FXIIgV+/sp2P/OSVnNQCLg14k3w3VvTWd5/czNPv7s/qGS1dUSqKfHZSvmaJLhIGgQiBIbLtYAe3PPoOb+5q7v/iFF55r4HnNxs5/w81C7EvmFxKWcDL4/9xIj+99Ihe+fKL/W7awzE6I3EWpCmoLvRNZbHPzqHkdbuYP6nUzmSaWvZxV2MX7x3oWflvPdBBVyRuCwadstX4GYdAGShnLZrMb69eCZC1b6C5K0plkdeOMGoTn4AwCMQnMET++vZeHnpjFy1dEe7+1yMHdO+//vp1+/jYuRPYcqDdLkk4p6aEOTUlve6x8swA1JorQGFoPH3jySy5/ale4ZYnff+FpNdbDxgRWZ2RGMV+T5KWEPS6mTdp8ELZ7VKsnF0F9B322dwZ4e26FhJa09IVYeGUMnsznxSqFwaDCIEh0uTI2DkQnLZmj0vZKr2nH9u9swRjpnKRwsAp8nn4n9d2csK8Gs5YOCntNVa+H8tm7zQf+fpJF5ENfo8bn8eVsRA9wA+e3sKDr/dEMVUWeW2Hdra+BEFwUlDmoDuf2cqPn30vp8+0Qg4zxZhnwlmT9sLl022b8NyJvVf/Tpz7BlJr8gqDx0rZcPtjG/u91kr5bJXHnFYR5MHP9E63MRjKAj2pP9LRlFJPoqKoJwGdc2EhCNlSUJrAj58zBMANp/cuBD5YGjqMH2U6p2JfWPHdv7xiBacfNhGAX12xglMOrenrtqQ6wSIEcocVOjrTNMf1ldbZKv5ifebf/OgiOzHcUCkNeHl6436u/9AhTEuT6iMcS7B4WhkzKot4YsN+iv0evG6F26WSzFOCkC0FpQnkkm0HOzj7v1/mLdMh3DFATWCXWVRl6YxylFIopTh94aR+E5A5hUB/aYuFgWNVPmvsyBxuaWkCVuK9oDd3a6kSv4fGzggf/dmrac+HInECHjfLHSVAlVIEvW5CEdkxLAycfoWAUuo+pdRBpdSGNOduUkpppVS1+Voppe5SSm1TSq1XSi0fjk4PldSojsHwxDv72Ly/nWjceFbnAAuCNHVFUQqqiwe2uSc1jYSQW6yd1Wt3Zo72siZ/q2C9P0Nd4cFgaSD1KWVFLbpjcYI+N1ccN4sbTpvH5cfOAowFgWgCwmDI5tt7P3B2aqNSagZwJuDca38OMM/8dw1w99C7mHsG6sRNx2tmoXSLju7YgIRLWyhKySCqaTk1ASF3PHfTyYBRWU1r3WeuoK5IjO5onE37DEexPwdOYYu+Yv2f3LCPt3a14Pe48Xvc3HjGfDs8NOhziU9AGBT9fnu11i8DTWlO3QncDDhnvvOBB7TBKqBCKTUlJz3NIY0d6VdZ/dERjvGLl97niXf28foHTVxgZutcMr2cWEJz8x/X896B9n6eYtDWHbV/wAOhv0LmwuCYW1NCVbGPWCLR74q6KxLn5j+u57tPGmU+cykELMdv6ibBUCTOZ3/3JpBcDtTCMAeJEBAGzqC+vUqp84E9Wuu3U05NA3Y7XteZbemecY1Sao1Sak19ff1gujFoGvqw96byl3V7bPv985sP8u0nNvNvD76J1pqbzpzPB98+lwuXTwfgD2vr+NkL27J6bnt3bFBJ3VI3jwm5w+NSxOLarvB17JwJ9rk/fvZY/ufTxmaurkiMf7zX8531e3InmGtNn0RqIZ+Xtva8X7qFQFDMQcIgGfAspJQqAr6CYQoaNFrre4F7AVasWDE8WbocOBOBNWSpCWitueHhdZQFPKy//Sw7N8u1J83h1AUTmV5p/GCLHau2v63fR7Hfw5fOOrTPNMxtoahdVWqgfPr42cydKBvFco3X7SKW0LSZm7WchXiOnFVpJ/rrisST1N9cagIPXXMMV963mt2OEGIgKWdRuoAA8QkIg2Uw3965wGzgbaXUDmA68KZSajKwB5jhuHa62TbqOO2l2RYVCceMaAsrbtuq/HTTmYdyjGOV6AzoiSU0D76+i58837dG0NYdG5Q5COBrH1nIZUfPGtS9QmbcLkUsnrDTL0x1FOJRygjDDHrddEXiSfmDcrFRzGJKeZCPLJ1CVyRuO54heR9KWnOQzy0+AWFQDPjbq7V+R2s9UWtdq7WuxTD5LNda7wceA64wo4SOAVq11vty2+X++dkL23jineS3da6Sss2xkmpjbQ1FCXrdvX70YTPGfNmMCrutP6NNWyhKmeT4zys8bkU0oXlhi5HPaaKZY8j5OQW8Lu59eXvShq5cmoMAW4P85t/eZa+ZbrorkpyiIhXxCQiDJZsQ0YeA14BDlVJ1Sqmr+7j8cWA7sA34JfC5nPRyAOxv7eb7T23h3x58kx89s9Vud66S+tqR6SQ1F0tbdzTtBq0Llk/ji2fO5xvnL7Lb+ovhb+8evDlIGB68Lhevvd/Iz154H4AjZlaycnYVv726ZzdwavppyK0mAD1hwL9btYsL7/4nkLx5zS8+ASGH9LsU1Vpf0s/5WsexBq4bercGR1ckxjHffs5+fddz73H83AkcPWdCshAYgiZQFuz9J/N73Fz/oXk0O7b0J/oIF00kNO3hmGgCeYbHrZLSMkwuD/DItccmXXPHRxfzl3XJVcbcOa7VUOkIA97X2k0ioZM0AV+aDYUBMQcJg2Rc7RhOt8vzH+81AD1pAQDb8dcfqSur1lB6TcDCGcNvvUe63PMdkRhaI5pAnpGavC9d9FZpwMvkAdZrHiipAQXt3bEkIRBPs8CwfBWCMFDGlRCwdu3OremJnLEigZI1gSzNQY57uqNxWkOxPoWAM3yzLRSjoSPMotueYlXKxjIrS6TU/c0vUlN2ZLL1H9JPkr+hkrohsLkrkmQOSldQvjzopSsSJxKT1BHCwBhXQsBK6GUVDYGe7ffWqt7jUllpAg++vpP/Xd2z5eFgW9h05va9ev/MCbMBQxPY2xIiFI3z2vvJQsAyRw02OkgYHpyaQHVJ5vDeGVW9E7vlktTUID95fhurtvfs17RSlSTdY6YVL8QSk+f++B/c8uj60e7GmGV8CQEzjM65gqu3NQFjhTSx1M/GPa39Jny79c8beGRNnf36pffqae6KUN5P2oavfnghJ86rpjUUtRONbdmfvIvYFgJiDsorvKYm4HUruwRlOiYNszkodaPYn96sS3odT2NirDIFR1MBCoF397Xx0Bu7+79QSMu4FALXnjSH4w+ZwMnza2xN4IHXdtjXdUbiWeWNd/KHNbvpisTtDWJ9URbw0haK2rHdW1JSSVjRSaIJ5BeWg7cs4O1zZ/Zw+wQyceSsSgJeFxcs770Jv7LY+C6l1hsoJFpDUf6yLi+2JY0pxpcQMCfXWdXFPPiZY1g0tYyGjjDReMJ2EM+aYPgLDrR1Z3xOapTFqYfWsL6uFejJN98XFUVeGjoito9iR2Nn0jOt8oHiE8gvvG5j4u+vTsPk8tERAlXFPjZ/8xzmpik7alWZa+4srDrDTq1o6def5oaH1/FBQ+co9mjsMb6EgLnyLjHTONSU+onGtV3A5arja7n7X43s1jUlmVM4p6aVOHFeT2y4lW++LxZPK6c1FOWGh9cBoDVJBcvFHJSfeFzGz6G0n8+luo/vTq5xKiR9hTYXqjkonVk3nhDn+EAY90IAeibgw6eVU1HkY97Ekj431qQmmDt1wUT7OBtN4Kjayl5tm/e32ceNVqZI0QTyCo/bMgf1/blMTVPxK9c8fM0x/Oaqo5J2nvdVe9gKK20uMHNQe5ogjzTBU0IfjCsh0BmOEfS6bduutdq3km9Zan5/eVYaUgp6zKoq4ieXHMG/HjMzq2peqep6kc/Nfa/uIBpP8Pr2RjuvkLefKmLCyGJ9Hv35aqqKfbx2y4eGtS/HzJnAqYdOTIp0WzytLOP1Po+LUr9nXPsEovFEL6d4Ok1ANs0NjHE1C3WEY5Q4VnHWD2jbwWQhEPD0vcW+PsUc5HIpPrJ0Knd89PCs+qGU4snPn2i/vuakOWza18abO5v5zas7snqGMPJYi4ciX/+Cfkr58GsDYGivAP92yly+cf7iPq8tC3r71BbGMlprzrzzZVbc8Qw7G3ts/unGG5a9EgNiXAmBho5IUjGOiWYURy8h4HMn7SBOZdO+NoqzmAj6wmk3thLLfe7BN3ly4/4hPVcYPizHcLE/ezPd/EnDu3Hsmx9dzOmHTeTak+b0q4WWBjz2HpiD7d1cff/qcaMZ7GkJ8UFDJ81dUb735Ba7PZ05SDSBgTFujNIb9rTyzLsHuOzomXZbsc9N0OtOowm4ONjHF2XtzmaWzazgMyfMYd3ulkH1x7nhx/rxNjp+kE5NQcgPLMdwNpoAwLvfOCvneYNSmVIe5FefOiqra8sCXntS/J9/7uC5zQf57Ws7ueH0ecPZxRHBGZ337r4e/1o6TUCEwMAY85pAe3eUw29/intf3g7AlcfV2ueUUpQHvbbpx4rGCXgNn0A4Fmd/a3Ko6FMb97NxbxsrZlVx6oKJ3HjG/EH1yzk5WELAuSN1weTM9l1hdLCS/mWrCRT5PDlPIz0UyoIeOyWKteBpHifRQhv3tuJxKU6YV50UvZdWCIg5aECMeSGwo6GL9u4Yj71tZHZMjfG+1KEZWJOxlXb3y396h2O+/RyRWIK1O5sJReL89e29lPg9XH3i7Jz10cr/7jLj/c5fNjVnzxZyh2VLHqopcLQoDXhpDxuagJVp9P5/7uDRlB3HY5HGjghVxT6mlgdo747R2BEmHIunTQETFk1gQIx5c1BLKHmlkxp7/x+nzWPTvrYks07A66I7muDZTQcAWPaNp+mKxDlv6VS6InFmVxfnZDfvf354IX6Py64EFYknOGRiCXdetGzIzxZyj5V8rWgAPoF8oizQowl0OjKK/vXtvXzMrIM9VmnuilBZ5GOC6Ws78o5nOXp2FUsdhZwsRBMYGGPz2+4g1fGVrt7rzy9bjjP7rlWPdVpFMClN7+odTcyaUNQrd8tgudpMJufcnVwe9OIaZjuyMDisco7Z+gTyjVLTJ6C1TjKTpNthPNZo6YpSXuRNCrh4/YOmtJs3RRMYGGPeHJS6sStdzhelVNLEG/C6icQSScU7wMjO2BWJ59wcEHDYjcfqBFMIWJpAII/s/AOhLOghoQ0toCPcYybpjIz9sNHWUJSKoJcJKdldm7skOmiojHkh0JgS058Nlm/AyvJpEUsk6IrEKfLlVkEK+Hr+zOnqwwr5geUT8Kcp5D4WKDVNmO3dUTq6Y8ysKmJOdfG42DvQ0hWlssjXK91La1eU2dXFzK4u5pkbTwJkn8BAGZvfdgfpqon1R9D8ke9v6+b0wybZ7bG4piscy5k5yMLndtk5YEQTyF8sTSCfIn4GgqXZ7m0J0d4dozTgoTTgGbNC4K1dzfz+9V2A4ROoKPIyLSVlR3NXhEMnlfLCF09h3qRSgl4pszlQxr4Q6IwwZYBZHS1NoDUUTbq3OxqnuSuac3OQUso2MYxVp2MhYK0gc104fqQ4dk41fo+L/3trL+3hGCV+DyUBT7+1M/KVC37+T77y53fMcO4E5UWGP+2UQ42EjkU+Ny2hqJ1GG3qCPoTsGZvfdgdtoWhWSd2cOHdeOkv5xRKaUDROMMfmIOM9zY1IYg7KW6yd3c58PWOJ8iIvx86dwOodTXRYmoDfm3ZX7VjCCv6wNmD+4vIjOX/ZVELROM2dEcqDyRszRRMYGGNeCHSEjS/7gsml3HBadjsjnfngy4NeFkwuBXrytAxHnLgleMQclL989cOH8cQNJ/YyOYwlakr8tHRFjTxapiYwFs1BrQ6HrxXePb3S+Fz8HjeLp5ajtbFwcy7k/B5XUojokxv28fmH3xqZTo9RxrxtojMSo9jv4cnPn5T1PQun9uzWnVgW4K//fgIJrfn0/auB3uX9comYg/IXv8fNYVPG9k7uymIfDR1hXEoxqSxAJJ6wiy2NJdbu6qmp/Oy7B3C7FMtn9qRod24KLXH8pgJed1KI6Gd/9yYAd35yWZ/V4gqZMa8JdIZjA0r4Bcmpgk+eX4PX7cLvcVPqN9oH+rxssFISiCYgDCeVRT5iCU0knmDepFJK/R46IjESaeoS5zMvb22wj1/cWs/iqWVJv8uyYM+xM+LO2gOUikQMZWbMCwFL7R0ot5yzgOtPPSR5RTGMRV4OtBmhrKNVn1YoDJx7X+ZNLKG8yIfW8KnfvDEmMoomEpruaJxV2xvtiLqmzghzJyZveCt1LOScC6tiv9ve/OkkXZtgMKaFQCyeoDuaoHgQjtxrT57LF886NKnNqvQ1nOrzSfNr+r9IEAZJZXGPk/SQiSW2Hf0f7zXw0Bu7RqtbWfPtJzax4D+fZPP+do6aVWW3z6hMDv5wagVO822Rz0NnmmiornGwYW64GNNCwMqPUuzPjYlloWkPHo7okLsvW873Pr4kq8pkgjBYnCnMi/2epLQK/ZXNHE3ue+UD9raEeHFLvd22dEa5fTwjJQKwxJ888VsU+9xs3t/OT557z04DAhASTSAj+futyILOlJrCQ+XjR05nakWQ4+ZOyMnznJxz+JScP1MQUrFs5VbEjDN8Ol/t4vXtYb7xt3d5ePUuplUGec+s/7FkeoV9zYzK5IitEn96c5AV3v3DZ7ZSW11st4s5KDNjWxMwhUCuHLlKKY4/pFqiCIQxy6yqYmZWFXHnJ5cByavk1lB+7heIJQzhVNccSpqslzkyhB6S4hNwav9Oc5AzvPu3r+20j0UIZGZMC4GOHGsCgjDWCfrcvHzzqZx66ES77ccXLwPyVwhYO3y7InG6IjFOPbSG1275kO3PmFYRtFNIWzj9gE5NwBmC3R6O2VlHQ1HxCWRiTAsBS7pL2KUgZOb8ZdOYNaGIljQZN/MB5w7frkicYr+HKeVBlFI8feNJPH1j7z1AzqzARd5kn4BFWyjKBNNRHorkpyksHxjTQqAjx+YgQRivVAS9OdEEmjoj/OjpLexu6hrSc/7z/zZw3e+NjVxJQiAcT1rUzZ9U2u/vOzk6qOe4pStip56W6KDMjGkhUF3i59zDJycVmhAEoTdlQS8tORACz246wF3Pb+Pq/1k9pOf8dtVO/r5+H0BSwreuSGzAqdydCf+c93ZG4rYZKd0GMsFgTC+hj5xVyZGzjhztbghC3lNR5Bvy6h16Qi0/aOgc1P3d0XivMOluRyhnW3dsSObd1FoQljlIHMOZGdOagCAI2VEe9OTEHGStqKNxPeBsnW/vbmHBfz7Jc2Ztb4vUcpBDMe/GU9JjWPsmRAhkRoSAIBQAFUEfzV1RXtxycEjPcU6mA9Es3trVzPk/exWAjXvb7Pamzgife/DNpGuHUn0vFk8WAsV+N0Gvm5D4BDIiQkAQCgBr89iVv1nN3pbQoJ/jXP3vbMxeCDgnfkdgD3c99x7W4n2qmeI92wwA9/zrkdz+kYVJbUfMrEh6HfC6qSzyDqoCYaHQrxBQSt2nlDqolNrgaPumUmq9UmqdUupppdRUs10ppe5SSm0zzy8fzs4LgpAdZY5Eiamr5YHgTL8wEPOSs7qZ8z7nsbXD1+3Kbm169uLJXHn87KS2OTUl/P7/O9p+XeRzM72qiLrmwQu+8U42f+37gbNT2r6vtV6itV4G/A34mtl+DjDP/HcNcHduuikIwlCocAiBSHzwMfOhaNxeyUcH8JzOcAylYGKpP2nib3RkNp01wRAC9e3hQfcPkmtEB71uZlQWsbt56E7x8Uq/QkBr/TLQlNLW5nhZDFhLi/OBB7TBKqBCKSVJcwRhlKlwJJaLDCGHUCgSt9OvD0SYtHcbKd/Lg96kTWuNHT0T/qePr8XrVpy5aNKg+wdGdTGLoM/NjKog+9u6kxLKCT0M2ieglPqWUmo3cBk9msA0YLfjsjqzLd391yil1iil1tTX16e7RBCEHOGsm5FpMlyzo4mv/PkdtM5sLgpFHUJgAMLEqvtRHvRS75j4nWaaeZNKee9b5zK3piTdI7LGn7JvYEZlEVrD3pbuIT13vDJoIaC1vlVrPQN4ELh+EPffq7VeobVeUVMjOfYFYThx1uFtDUVp6Ohtcrnivjf4/eu7aAtljqRxagIDyUra6RACB9t63ns48hmlmoOmmA7nA20iBNKRi+igB4ELzeM9wAzHuelmmyAIo4hTE7jyN6tZccezva6xNmnt72Oy7IrGbSfzgDWBgCEEhnsydm4YC/rcVJv1QYbqaxivDEoIKKXmOV6eD2w2jx8DrjCjhI4BWrXW+4bYR0EQhkjA6+4VTpmKVXt7X2vmSJruiJHbx+tWA3IMWz6BsqCX2DDXO3aag2pK/dSUiBDoi3635imlHgJOAaqVUnXAbcC5SqlDgQSwE/isefnjwLnANqALuGoY+iwIwiA4/pDqPs9b5VX7WqmHonGCXjc+t2tAmkBnOMaU8gCTy4e/xrbTHFQe9JJIaLxuRX1HmH9/6C1W1lZy+bG1w96PsUK/QkBrfUma5l9nuFYD1w21U4Ig5B5norV0WOka9rWmFwJ/WbeHXU1dHH/IBLweV1bRQZaT2XIMz0opEwnw00uPYKmjithQSR2ny6WoLvGzcW8bL2+t569v7xUh4GBMJ5ATBCF7nCvkdFjmnQNt6c0mX/vLRgDe2tWStSaw5OtPM2tCER3dMYr9nl61gsFIF52ufbC4zY0MztKa+1q7Mwq3QkfSRghCgeDvRxPoDBuho6kJ3SyWmykZLjtmFj6PIQR2NXaxzawJnMqGPa20d8fYsKeNrmicYr+bmRN6T/ZWps9c8ufPHcdfrjvefv2JI6fn/D3GCyIEBKFA6M8c1GkmWUs18zR1RojGE8QSmmUzKrjcEgLxBCd9/wVO/9FLvZ7VEY7x4Z+8Yr+OJzQBj5uygJcy0/egFFSX+JI2suWKI2ZWUukQLt/7+JKk833thSg0xBwkCAVCX5rAI6t32wnhnLmFwrE4y7/5DJcePZOOcMx2HvdnDno/jXZghW6++uUP0R1NUFXsIxpP2Oab4UQpRWnAQ3u3Ieiau6JUDYMGMhYRTUAQCgSPO/nnnnCEat78p/X2sTP0s8HMvvnMuwcMu75ZucvXj2P4/fo0QsD0SZQGvNSU+nG7VK8CM8PJHz97HIdPKwdgv/gHbEQICEKBEs9gEnFO7gfNcNH69jDvHeygJEtNIJ2foD+fxHBz6ORS7vzkUgDe3NU8qn3JJ0QICEKBklqFy8KpCRxM2WBV4u/RBPraLJYuEie19ONoMLemhJlVRTyxYZ/4BUxG/1MRBGFU2NfaTe2X/86z7yaXe4w6fAKZhIC3H00gXenJ/kJURwKlFJesnMmr2xp5OmXchYoIAUEoUNbtNkwiD72xiynlAaaUB1g5uypZE0jZPVzs0AScCeRSV9XphUB+TDefOdEoRLNpX1s/VxYG+fGpCIIw4iQcC/nuaJzTD5tEedCbpAmkOlCt1b/P40oqCJOaDyhdhtGRdAL3hdftojTgSaprkI5wLJ7RZDaeECEgCAWK0zEcisYJ+oycQE5NYMPe5NVyS8iY+H1uV1JCttSVfz5rAgCVRT6au/quO3zoV5/kcw+uHaEejR7586kIgjDsvHbLh7jhNCMJsBUi+tzmg3RHEwS8bjyO7KBdkRhb9icLgePmGknonFoA9F75p9ME8sEnYFFZ5KW5H00A4KmN499vIEJAEAqIKeVBasz8+qkhogGvC6/bRdScwLfsb8dpDbn2pDmcsdAo/bg9ZR9A6qTfHY1zzuLJ3H3ZcrstH6KDLCqKfLT0oQkMJE32WCd/PhVBEEYEa4dudzR5ogt63UbUj+kT6Iokm3TKndXJUlbRHd0xHn5jl21D744mCPrczJtUal+TT+agiiJvn+ag1LGPZ/LnUxEEYURwK0MIhCLJZSSNOgGKmOkxtpzAVlYHpznngatXJt37sxe28eVH3+FPb9YBhmbg97iTksPllznIR0tnZnNQSISAIAjjFZc5q6eudgOmJmCZg6ydw1a6CedK/oiZlaysrbJfWyUpG800E+FonIDXlVTWMt80gfZwLKPZpzOSuc7yeCN/PhVBEEYEK4VQOiHgcbvsEFFLE/CaQiM1xDPo63kdMyfTuKlFhGOGo9nlSA6XTz4Bq/j8vpb0OYREExAEYdziss1BqULAhc+tiMQTaK3tVXI6TQCw8whBzz6BeMJIRxGJJ3pdn0/moDk1JQC835C+FkJnWDQBQRDGKZZjOJQSyx9PaLzmhB9L6B5NIIMQuO3DC1k0tQzo0Rqi8YR9nKo5jETK6GyZU10MpE95DeIYFgRhHGNpAqkTXXc0gdec6GPxHk3A5zau96dM6hPLAtx1yRGAUXgGoL07am8UyycfQCpVxT4qirw88+6BpJTaFs6/zXhPNJe/n5IgCMOCbQ6KJps8jplTZa/6I/GEHSpqmYMCaSZ1a6K3No+1hqJ0x4wJ1NIEjps7IddDGDJKKT6yZCqvf9DEGzuaep13OoZf3FI/kl0bcUQICEKBYZuDHKvdP3/uOCaU+O1V/9Mb99tmHY/Zlq48ZaVZGtLaH9AaihKOWuYg4/r7r1rJhq+fNRxDGRKXHj0TgObO3vsFnH+bq+5fTWc4Zju/xxsiBAShwEgXHWRF+lir/i/9cb3DHGS0eVy9p4tiv4dK5yYyhyZgOYJ9HpedgjqfsKqkdaRxAqeGiC667Sm+9tjGEenXSCNCQBAKjB5zkEMImKYbr6MEZSSWwKUM0wkYheHTMaOqyD5u6eqtCeQrxX5jzOkigXY2dPVqe37TwWHv02iQ35+SIAg5x51ms1jAFgI9M300nsDrdtmO0UxCYHpl0D6u7wjbq+igN/9W/06s2gidKQ7yg+3d/GHtblbOruLsRZPt9trqIsYjIgQEocBwp9knYAmBsCOfUDiWwOdx8YUz5uNxKWonFKd93ozKnsmxvTtmb8CqcqSMyEf8Hhdul6IzHGPDnla7LnJDe4SEhquOq2XxtDL7+tbQ+Nw7kN+iWhCEnNOTNqJnUrPMQfUdPTUC2kJRfG4XZy6azLb/Ojfj8y5eOZOD7WG6o3Ge2LCfrQfbgfwXAkopin1uuiJxPvyTVwDY8Z1/sc1kRX5Pki+jLdR/6umxiGgCglBgWOYgZ3i8ZQY61JH1s7krkjYiKJXZ1cXc+cllfPzI6YCRghpIchjnKyV+T5Lg01rb+xyCXjclgWSn93hEhIAgFBipG3drJxTZzt/TF07ilnMWANDcFU1yFPeHVadg6/52Koq8dqRRPlPk9/DWzmb79cH2sG0mC3rdSZpAxzgNE83/T0kQhJzicnh4rzlpDi9+6dSk87NM239LlpqARXWJIQT2tnbnvSnIotjvYa+jjvIn7nnNrjMQ9Bm1iJ20dRsmtLuee4+P/fzVkevoMCI+AUEoMJw5fGrMiduJtfptCUWZUh7sdT4TE0v9FPvcdEbiSXUE8plic39E7YQiplYE+ef7jXzpj+sBw1lenLK/oTUUparYx4+e2QoYm+TyKSfSYBBNQBAKDKcmMLGstxAoMuPnW7qiA9IEPG4XC6YY0TTVaYRLPmLlPDpv6VS+e+GSpHNBrxtPygSf6hew6iiMZUQICEKBka0mAD3J47LlnMVGXP3lx84aZO9GFqtwzmXHzGJGVREnz6+xzwV9btvPceK8agB2NXXx/Oae4vM7GztHsLfDg5iDBKHAcAqB6tI0moCjWMxANAGAK4+r5SNLpzKpLDD4Do4gv7xiBftauu3+fvmcBby01UgYF/C4KSrzsPrW02nqjHDWf7/Mfzz0VtL9Oxu7OG7uiHc7p4gQEIQCw2kOSnV8ApQ5SkJa5SKzxeN2jRkBADC3poS5ZoEZSB67tZ+iptRPIkM66T3NoeHt4Agg5iBBKDCcmkDQ27vaV1nAy9c+vBCAzWbMf6HgrImcTfvBdvEJCIIwxnA7NIHU6l8WVx1fCyTnBSoEin3p/x4BrzutaexgezjN1WOLfoWAUuo+pdRBpdQGR9v3lVKblVLrlVJ/VkpVOM7dopTappTaopTKvyTiglDgOBPBZar+pZTixS+ewp8/d/wI9So/UJmy5JFeG6jPIAS+8L/ruOK+N3LWr+EkG03gfuDslLZngMVa6yXAVuAWAKXUQuBiYJF5z8+VUvlTXVoQhCRzUF+TXm11sR0dI6QXApk0gUff2sPLW8dGRbJ+hYDW+mWgKaXtaa21lX1qFTDdPD4feFhrHdZafwBsA1bmsL+CIAyRsb65abRIFQITin00doTtqmpjlVxEB30a+F/zeBqGULCoM9t6oZS6BrgGYObMmTnohiAI2eDqY/UvGKk00gnKVCEwu7qYxp0RGjvDTCwdOxFRqQzJMayUuhWIAQ8O9F6t9b1a6xVa6xU1NTX93yAIQk4QTaBvvnLuYfy/sxf0al88rTzptRUK25SmRvFYYtBCQCl1JfBh4DKt7SDaPcAMx2XTzTZBEPIEt2gCg+IzJ85mxaxKvn7eIg6fVs6pCyYC8P/+uJ4Vdzwzyr0bPIMyBymlzgZuBk7WWjuLcT4G/F4p9SNgKjAPGBsuckEoENLUixeyoCzg5Y//dhwAnzqu1q6b8HZd62h2a8j0KwSUUg8BpwDVSqk64DaMaCA/8IwZXbBKa/1ZrfVGpdQjwLsYZqLrtNbx9E8WBGE0EHNQbkhNl90djWfcd5HP9CsEtNaXpGn+dR/Xfwv41lA6JQjC8CGO4dyQWjmtrTvaSwjE4om8L66T370TBCHniBDIDR63iwqHIGg3C85EHdXHImOgEpkIAUEoMMQclDsqHGGjViF6q0YxQCQmQkAQhDxDZEDumOjImGppAt3Rnok/LEJAEIR8o69UEcLA+Oiynr2wj6zZzdMb94smIAjC2MCqliUMnktWzuCb5y8C4G/r93HNb9cSjvUIAdEEBEHIS17/ymn88ooVo92NMY9Sio8tn57UlmwOyv8IeaksJggFyFiq/pXvFKXUIHCagwZamW00EE1AEARhCCilqC7pSbnt1ASuuO8Nntywnwdf3zkaXcsKEQKCIAhD5JFrj7GPnZoAwGd/t5Zb/7wh9Za8QYSAIAjCEJlTU8KXzjoUgHf3taW9RmcoVj/aiBAQBEHIAVZ94h89szXt+c5IfjqJRQgIgiDkgJJAz+7hS1b2LpTV2JGfRelFCAiCIOSAEr/b/N/D1SfM7nW+IU8jhUQICIIg5IBivxFxXx70Mru6mMuOnsns6mL7vGgCgiAI4xhrv0B50IvbpfjWBYdz2JRS+7xoAoIgCOMYK2v0tMqg3eZz1BJ4v75jpLuUFbJjWBAEIQesmFXJDafN44pjZ9ltfk/PbuK3djWPRrf6RYSAIAhCDnC5FDeeMT+pze81NAGPS7FhbxvReAJvnlUay6/eCIIgjCMuP2YWZQEP1516CJFYgv2t3aPdpV6IEBAEQRgm5k0qZf3tZ7GithKAvS0h+9zelhCvb28cra7ZiBAQBEEYZqaUG87ifQ5N4Mw7X+aT964arS7ZiBAQBEEYZqZWGKm7b3tsIyEzfURH2ChHGRrldBIiBARBEIaZIp8Rg9MaivKP9+qTzjWM8iYyEQKCIAgjwCETSwCIJzSxeE/NgYPtIgQEQRDGPb/+lFHOsysST/INiCYgCIJQAAS9xsaxrmic/W09QqBeNAFBEITxT9DMLRSKxJJqD4smIAiCUABYzuFQJEFTpyEEjplTlZRpdDSQtBGCIAgjgNul8HlcdEVjNHUabfdftZKA1933jcOMCAFBEIQRIuBx8YuXtjOnppgSv2fUBQCIOUgQBGHEiMaNYvPb6zupKvaNcm8MRAgIgiCMEKFoz+5gEQKCIAgFjAgBQRCEAqY86B3tLgAiBARBEEYFEQKCIAgFTFkgP4IzRQgIgiCMAmVjRRNQSt2nlDqolNrgaPuEUmqjUiqhlFqRcv0tSqltSqktSqmzhqPTgiAIY5EXv3iKfTxmhABwP3B2StsG4GPAy85GpdRC4GJgkXnPz5VSo78bQhAEIQ+orS7myFlGqcmywBgRAlrrl4GmlLZNWustaS4/H3hYax3WWn8AbANW5qSngiAI44B4wtgwNl4dw9OA3Y7XdWZbL5RS1yil1iil1tTX16e7RBAEYdxhCQErq+hoM2qOYa31vVrrFVrrFTU1NaPVDUEQhBHFmvy9bjXKPTHIdYzSHmCG4/V0s00QBEEA/vuTy3h49W4WTikb7a4AudcEHgMuVkr5lVKzgXnAGzl+D0EQhDHL1IogXzhjPkqNEU1AKfUQcApQrZSqA27DcBT/BKgB/q6UWqe1PktrvVEp9QjwLhADrtNaxzM8WhAEQRhl+hUCWutLMpz6c4brvwV8ayidEgRBEEYG2TEsCIJQwIgQEARBKGBECAiCIBQwIgQEQRAKGBECgiAIBYwIAUEQhAJGaa1Huw8opeqBnYO8vRpoyGF3xgIy5sJAxlwYDGXMs7TWQ8q7kxdCYCgopdZorVf0f+X4QcZcGMiYC4PRHrOYgwRBEAoYEQKCIAgFzHgQAveOdgdGARlzYSBjLgxGdcxj3icgCIIgDJ7xoAkIgiAIg0SEgCAIQiGjtR6xfxhVx17AqDewEbjBbK8CngHeM/+vNNsVcBdGwfr1wHLHs2YCTwObzOfVOs5dDNwKlAN/Bd423++qlP48gVH97B/AOvPfXuD/8mGcwKmOfq0DuoGPphnnAuA1IAx8MU1/7gGOBz5h9icBrEi55hbz/bcAZ+XzeM3jU8xrNgIvDWS8QC0QcrzPPfk4zr4+V+A+4CCwIU0/jwF+CUww+9sB/DTlmifp+V3cA7hH+Pf7PfMZm8xrlOPcl4HLHK8vBDS9v7NrMX7jfwc2m8/7juP8Z4F3zL/xK8DCUZ6z+h0zMAt4zrz3RWB6hjnrQYzf6gbzu+B1/C5aHd+tr/U7xsFOdIP5B0yh54dQCmwFFpp/nC87/hjfNY/PNQetzC/2645nvQicYR6XAEWOc/8DHAl8xfGsGoxiOD7zdRB4I00f/wRckS/jdDyzyux/unFOBI7CqOOQTgisA9zAYcCh5t/OOSkuxJgQ/MBs4H2ymBRGcbwVGD/KmWb7xAGOt5Y0k2cejjPj5wqcBCxPNw7g6xgTZzFwAsZkmCoEysz/FcZ3/uKRGj9wHPCq+Rm5MQTdKY73eQGocbzPy8CqlM9wNkYlwyLgVLPNh7GgO8c5RvP4PODJ0frMsx0z8AfgU2bbh4DfOq6x5yzzfZT57yHg38z2U4C/DWSMI2oO0lrv01q/aR63Y0jEacD5GF98zP8/ah6fDzygDVYBFUqpKUqphYBHa/2M+awOrXUXgDJqti0D3sRYPZSabSUYP7aY+exTMCYHG6VUGcYf/v/yYZwpj/048ES6cWqtD2qtVwPR1L4opQ4Dtmqt41rrTVrrLWm6fD7wsNY6rLX+AGMVszJfxwtcCjyqtd5lvufBAY53UOTT56q1fhnj+5yO04BntdadWutXMDSN1PvbzEMPxuTZb4RIDsevgYD5vn7ACxwwx1+GsVCrN5/xTeC7acZwNsak3qW1fsHsUwTj+zE9ZYxgCMR+x5gHY14IPG8+6wXzeRanYM5ZWuvHzffQGCV8pw90bBaj5hNQStUCRwCvA5O01vvMU/uBSebxNGC347Y6s20+0KKUelQp9ZZS6vtKKbd5zRHA2+Yf56cYq8G9GGrhDVrrhHndORgqsZOPAs+lfHmGxBDH6eRiDIlv4RxnX6QbZyrZvH9WjNB45wOVSqkXlVJrlVJXOK7LZrwAs83vzktKqROzuD6JPPhcM/WrGohqrVuzuPYpDJNSO/DHAb5PLYMcv9b6NYwJbp/57ymt9SbzmtMxzCEopZYDM7TWf0/ThbNJ+ZyVUhXAR6z7zbbrlFLvY6zc/2MgY0xlJMaMoZF/zDy+AGMRO8F83eu7rZTyApentB+rlHpbKfWEUmpRf+MaFSGglCrBUEE/nzrhml/+/n4AHuBE4IsY6vIc4Erz3NkY6hjAWRimgakYq6ufmlIXDJvxKynPvYTkH+SQyME4redMAQ4HnnI0O8fZF2eR3aQ4ZEZwvB4Mc8m/YIzvP5VS881z2Yx3H4Yp6QjgC8DvHd+LbPqXD59rJs7E8JX1i9b6LAxzhx9DA86KoY5fKXUIxuJsOsak+SGHID4beEIp5QJ+BNyU5n4fhq18u6PNg/HbvcvZrrX+mdZ6LvD/gK9mO8Y07znsYzaPvwicrJR6CzgZ2ANYddrTzVk/B17WWv/DfP0mRj6hpRh14P+vv7GNuBAwJdefgAe11o+azQcsNdn831Lv92A4Ziymm211wDqt9XatdQxjoMvNa5w/gqswzAZaa70N+ABYoJSaA+w21UerX9UYJpB0q47RGqfFRcCftdZOs0C/P3alVBFQobXe2093+3v/fhnh8dZhrKQ6tdYNGDbjpdmOVxtmr0bzeC2GD2R+X/eM0jgHQ7aaEABa627gLySbHTKSo/FfAKzShhm3A2MCPNa8ZiWGeaMUWAy8qJTagWFff0wptQJjAZg6Gd4LvKe1/u8MXX+YHpPNgBjBMaO13qu1/pi5QLnVbGvJMGfdhuFH+ILVprVuM5+P1vpxwGvObRkZUSFg2jt/DWzSWv/Iceox4FPm8acwvpRW+xXK4Big1VTBVmPY2qzseR8C3lVKlWP4ChrN9l0Y9lGUUpMwnITbSf9D+TiGQ6WX/XQUx2mRpKGkGWcmTsVQQfvjMeBipZRfKTUbmIf5pcyGURjvX4ATlFIec+I/GsNWm9V4lVI1lvnQ/HHNw/he5Ns4B4TZvyUY2m9f15U4JjAPhka1Ocvn52L8uzBWux5zgj0Z2GSaLjZrw5/TqrWu1lrXaq1rMRzD52mt15CiLSml7sCIEvp8Sn/nOV7+C0Ykz4AYyTGb71dtakFgROzdZx4nzVlKqc9gaL2XOEzcKKUmm31GKbUSY47v+/ukB+gtH8o/jEgFjRH+tM78dy5GKNtzGB/Ss0CV7olc+BnGSu0dkqMDzjCf8w5wP4bD5ePA7Y5rpmKsqt7BCKX6V7P9rzhCSs22F4Gz83CctRgrCZejLXWckzFWx21Ai3lchuETcUYgXGCeC2M4pZ5ynLvVfP8tmNEV+Tpes+1LGBFCGzBUdLIdL0bkzEazn28CH8nHcWb6XM1zD2GYtaJm+9XACuD+lD7vwHAgd5jXLcSwX682x7EBw2zgGanxY0TH/IKe8O4fme1fBK7M8N4vOu5fDQTN4+lmnzY5+vQZ89yPHZ/zC8Ci0fotZztm8zvwHkYU0q8Af7o5CyPA5X1SQkGB680xv40hOI/rb4zjKm2EUupXwK+04ZXPdI0feFWP4XS12YzTvO5N4GidbG4YcxTKeLMdZx/3fxXYprV+OLc9GxmUUs9ghGfv6+Oa6cAvtdbnjFzPho8sxzysc9a4EgKCIAjCwJC0EYIgCAWMCAFBEIQCRoSAIAhCASNCQBAEoYARISAUJEqpuFJqnVJqozK22N/kiM/OdE+tUurSkeqjIIwEIgSEQiWktV6mtV6EsefkHOC2fu6pxUheJwjjBgkRFQoSpVSH1rrE8XoOxiakaoyc7r/FyDwJcL3W+p9KqVUY+V8+wMgceRfwHYzsjn7gZ1rrX4zYIAQhB4gQEAqSVCFgtrVgpBZpBxJa624z9cBDWusVSqlTMPL6f9i8/hqMWgZ3WBt6gE9oIx23IIwJPKPdAUHIQ7wYGWeXYWRwzJRc7kxgiVLq4+brcow8RCIEhDGDCAFBwDYHxTGyQd6GkWtoKYbfLFNSQQX8u9b6qQznBSHvEcewUPCY2WjvwSjBqDFW9Pu0kZ3xcozkX2CYiUodtz4F/JuZFRKl1HylVDGCMIYQTUAoVIJKqXUYpp8YhiPYShX8c+BPyqhY9iTQabavB+JKqbcxMtf+GCNi6E0zfW89g8xZLwijhTiGBUEQChgxBwmCIBQwIgQEQRAKGBECgiAIBYwIAUEQhAJGhIAgCEIBI0JAEAShgBEhIAiCUMD8/w1lbbIhmhflAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "df.loc[:, ['Nikkei']].plot()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "DJIA      4000\n",
      "FTSE      3000\n",
      "CAC       1000\n",
      "Nikkei    2000\n",
      "dtype: int64\n"
     ]
    }
   ],
   "source": [
    "# 投资人持有的资产组合为\n",
    "# 指数         组合价值（1000美元计）\n",
    "# DJIA         4000\n",
    "# FTSE 100     3000\n",
    "# CAC 40       1000\n",
    "# Nikkei 225   2000\n",
    "P = pd.Series([4000, 3000, 1000, 2000], index=['DJIA', 'FTSE', 'CAC','Nikkei'])\n",
    "print(P)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "count    500.000000\n",
       "mean       0.869967\n",
       "std       93.701638\n",
       "min     -555.770647\n",
       "25%      -51.657752\n",
       "50%       -8.389697\n",
       "75%       51.488049\n",
       "max      477.955543\n",
       "dtype: float64"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# P1, 取从Day1至Day500的500个数据，\n",
    "# P0，取从Day0至Day499的500个数据\n",
    "P1 = df.loc['2006/8/8':, ['DJIA','FTSE', 'CAC', 'Nikkei']]\n",
    "P0 = df.loc[:'2008/9/24', ['DJIA','FTSE', 'CAC', 'Nikkei']]\n",
    "P0.index = P1.index\n",
    "# 计算收益 R\n",
    "R = P1/P0-1\n",
    "# 计算收益\n",
    "# P代表资产组合价值\n",
    "Profit = (R * P.to_numpy()).sum(1)\n",
    "# 计算损失\n",
    "Loss = -Profit\n",
    "Loss.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<AxesSubplot:ylabel='Frequency'>"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 观察 Loss 的分布\n",
    "Loss.plot.hist(bins=50, density=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>VaR</th>\n",
       "      <th>ES</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0.90</th>\n",
       "      <td>121.032239</td>\n",
       "      <td>171.035875</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0.95</th>\n",
       "      <td>156.547157</td>\n",
       "      <td>209.333219</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0.99</th>\n",
       "      <td>253.344578</td>\n",
       "      <td>345.681782</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "             VaR          ES\n",
       "0.90  121.032239  171.035875\n",
       "0.95  156.547157  209.333219\n",
       "0.99  253.344578  345.681782"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "VaR = Loss.quantile(q=[.9, .95, .99], interpolation='higher')\n",
    "ES = pd.Series(np.zeros(3), index = VaR.index)\n",
    "for i in VaR.index:\n",
    "    ES.at[i] = Loss[Loss > VaR[i]].mean()\n",
    "result = pd.DataFrame({'VaR': VaR, 'ES': ES} )\n",
    "result"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 使用 bootstrap 方法来改进历史模拟法\n",
    "bootstrap_times = 250\n",
    "conf_levels = np.array([.9, .95, .99])\n",
    "n_levels = conf_levels.size\n",
    "VaRs = pd.DataFrame(np.zeros(bootstrap_times * n_levels).reshape(bootstrap_times,n_levels), columns=conf_levels)\n",
    "ESs = VaRs.copy()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "for i in np.arange(bootstrap_times):\n",
    "    loss_sample = Loss.sample(n=500, replace=True)\n",
    "    VaRs.loc[i] = loss_sample.quantile(q=conf_levels, interpolation='higher')\n",
    "    for j in VaRs.columns:\n",
    "        ESs.loc[i, j] = loss_sample[loss_sample > VaRs.loc[i, j]].mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>VaR</th>\n",
       "      <th>ES</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0.90</th>\n",
       "      <td>120.322519</td>\n",
       "      <td>170.216594</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0.95</th>\n",
       "      <td>152.927359</td>\n",
       "      <td>208.056176</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0.99</th>\n",
       "      <td>244.422253</td>\n",
       "      <td>340.625687</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "             VaR          ES\n",
       "0.90  120.322519  170.216594\n",
       "0.95  152.927359  208.056176\n",
       "0.99  244.422253  340.625687"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "VaR_boots = VaRs.mean()\n",
    "ES_boots = ESs.mean()\n",
    "result = pd.DataFrame({'VaR': VaR_boots, 'ES': ES_boots} )\n",
    "result"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.9  0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99]\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<AxesSubplot:>"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXcAAAD4CAYAAAAXUaZHAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAAArd0lEQVR4nO3dd3wc1bn/8c+jLkuyrOamYhX3XmRjm+YSsEkINh1TAgkBQssNP8INJblJKAktkJBGCNwQEoIhuZji4IABG1NscO8Fq9iSLNuqtopVVnt+f8zIkoxt1d3ZXT3v12tfuzszu/vsWPrq+MzMOWKMQSmlVGAJcroApZRSPU/DXSmlApCGu1JKBSANd6WUCkAa7kopFYBCnC4AIDEx0aSnpztdhlJK+ZX169eXGmOSTrbOJ8I9PT2ddevWOV2GUkr5FRHZd6p12i2jlFIBqN1wF5EIEflCRDaLyHYR+bm9/EURyRORTfZtor1cROQZEdkrIltEZLKHv4NSSqkTdKRbph6YY4ypFpFQ4BMRWWavu8cY868Ttr8AGGbfzgD+aN8rpZTyknbD3VjjE1TbT0Pt2+nGLFgAvGS/bo2I9BORQcaY4s4U1tjYSGFhIXV1dZ15mc+LiIggJSWF0NBQp0tRSgWwDh1QFZFgYD0wFPi9MeZzEbkVeERE/gf4ALjXGFMPJAMFrV5eaC8rPuE9bwZuBkhLS/vKZxYWFhITE0N6ejoi0ukv5ouMMZSVlVFYWEhGRobT5SilAliHDqgaY5qMMROBFGCaiIwF7gNGAlOBeOBHnflgY8xzxphsY0x2UtJXz+Spq6sjISEhYIIdQERISEgIuP+NKKV8T6fOljHGVAIrgPnGmGJjqQf+AkyzNysCUlu9LMVe1mmBFOzNAvE7KaV8T0fOlkkSkX7240jgPGCXiAyylwmwENhmv+Qt4Fv2WTPTgSOd7W9XSqleYeWjsP9zj7x1R1rug4AVIrIFWAssN8YsBV4Wka3AViAReNje/h0gF9gL/Bm4rcer9oLZs2fz7rvvtln261//mltvvfWk28+aNYsRI0YwYcIEpk6dyqZNm7xQpVLKbxWth5W/hNyVHnn7jpwtswWYdJLlc06xvQFu735pzlq0aBGLFy9m3rx5x5ctXryYxx9//JSvefnll8nOzuYvf/kL99xzD8uXL/dGqUopf/Thw9AnAWZ4pv2rV6iewmWXXca///1vGhoaAMjPz+fAgQO88sorZGdnM2bMGH7605+e9LUzZsygqKhLhxmUUr1B3seQ8yGc9f8gPMYjH+ETY8u05+dvb2fHgaM9+p6jB/flp98cc8r18fHxTJs2jWXLlrFgwQIWL17MFVdcwf333098fDxNTU3MnTuXLVu2MH78+Dav/c9//sPChQt7tF6lVIAwBj58CGIGwdQbPfYxfhHuTmnummkO9xdeeIHXXnuN5557DpfLRXFxMTt27Dge7tdccw0NDQ1UV1drn7tS6uS+XA4Fn8OFT0NopMc+xi/C/XQtbE9asGABd911Fxs2bKC2tpb4+HiefPJJ1q5dS1xcHDfccEObc9ZffvllpkyZwj333MOdd97J66+/7kjdSikf5XbDhw9CXDpMus6jH6V97qcRHR3N7Nmz+c53vsOiRYs4evQoUVFRxMbGcujQIZYtW/aV14gIDz30EGvWrGHXrl0OVK2U8lk73oCDW2H2AxDs2SFINNzbsWjRIjZv3syiRYuYMGECkyZNYuTIkVx99dWceeaZJ31NZGQkd999N0888YSXq1VK+awmF6x4BJJGwdhLPf5xftEt46SFCxdind1pefHFF0+63cqVK9s8v/vuuz1YlVLK72xZDGV74cqXISjY4x+nLXellPI0V711NergyTDyG175SG25K6WUp61/EY4UwEW/BS+NL6Utd6WU8qSGGlj1BKSfDZmzvPax2nJXSilP+vxPUFNi9bV7cVRYbbkrpZSnHKuET38Nw+dDmndnG9VwV0opT/nst1B3xDqv3cs03E8jODiYiRMnHr89+uijACxdupRJkyYxYcIERo8ezZ/+9CeHK1VK+ZzqEljzRxhzCQwa3/72PUz73E8jMjLyK2PENDY2cvPNN/PFF1+QkpJCfX09+fn5jtSnlPJhnzwFrjpHWu2gLfdOq6qqwuVykZCQAEB4eDgjRoxwuCqllE+pLIC1z8PEqyFxqCMl+EfLfdm91ngMPWngOLjg0dNucuzYMSZOnHj8+X333ceVV17JRRddxJAhQ5g7dy4XXnghixYtIihI/04qpWyr7El9zv2RYyX4R7g75GTdMgDPP/88W7du5f333+fJJ59k+fLlpxyWQCnVy5TlwMaXYdpN0C/VsTL8I9zbaWE7Ydy4cYwbN47rrruOjIwMDXellGXFLyAk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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 非参数密度估计改进历史模拟法\n",
    "# 计算任何置信度下VaR、ES\n",
    "# 可以观察到，ES的曲线比VaR相对平滑\n",
    "conf_level = np.linspace(start=0.9, stop=1, num=10, endpoint=False)\n",
    "print(conf_level)\n",
    "VaR = Loss.quantile(q=conf_level, interpolation='higher')\n",
    "for i in VaR.index:\n",
    "    ES.loc[i] = Loss[Loss > VaR.loc[i]].mean()\n",
    "result = pd.DataFrame({'VaR': VaR, 'ES': ES} )\n",
    "result.plot()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "            0.90        0.95        0.99\n",
      "0.05  108.944427  133.908789  185.113753\n",
      "0.95  128.229260  167.031951  282.234123\n",
      "VaR 90% confidence interval = [185.1137530499617 ,282.23412300129525]\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 测算历史模拟法的置信区间\n",
    "# 一种是OS统计量法， 另一种是bootstra法\n",
    "# bootstrap\n",
    "# 99%的VaR的90%置信度下的置信区间\n",
    "VaRs[0.99].plot.hist(bins=50, density=True)\n",
    "VaR_conf_int = VaRs.quantile(q=[.05, .95])\n",
    "print(VaR_conf_int)\n",
    "print(\"VaR 90% confidence interval = [{0} ,{1}]\".format\n",
    "      (VaR_conf_int.at[0.05, 0.99], VaR_conf_int.at[0.95, 0.99]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "ES 90% confidence interval = [246.17331878205255 ,477.95554256263836]\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "ESs[0.99].plot.hist(bins=50, density=True)\n",
    "ES_conf_int = ESs.quantile(q=[.05, .95])\n",
    "print(\"ES 90% confidence interval = [{0} ,{1}]\".format\n",
    "      (ES_conf_int.at[0.05, 0.99], ES_conf_int.at[0.95, 0.99]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 使用OS统计量来估计VaR的置信区间\n",
    "# Kendall and Stuart的研究，抽样数据概率分布的第q个分位数的估计值x的标准误差为：\n",
    "# 1/f(x) * sqrt((1-q)q/n)\n",
    "# n为样本个数，f(x)为密度函数，f(x)可以通过将经验数据与已知分布进行匹配来估计。\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>loss</th>\n",
       "      <th>w</th>\n",
       "      <th>cum_weight</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Date</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2008/9/16</th>\n",
       "      <td>477.955543</td>\n",
       "      <td>0.005283</td>\n",
       "      <td>0.005283</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2008/1/22</th>\n",
       "      <td>345.481925</td>\n",
       "      <td>0.002429</td>\n",
       "      <td>0.007712</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2008/2/5</th>\n",
       "      <td>282.234123</td>\n",
       "      <td>0.002554</td>\n",
       "      <td>0.010266</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2008/1/4</th>\n",
       "      <td>277.055536</td>\n",
       "      <td>0.002310</td>\n",
       "      <td>0.012576</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2008/9/4</th>\n",
       "      <td>253.344578</td>\n",
       "      <td>0.005101</td>\n",
       "      <td>0.017677</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2008/9/8</th>\n",
       "      <td>-285.047818</td>\n",
       "      <td>0.005152</td>\n",
       "      <td>0.986276</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2008/1/24</th>\n",
       "      <td>-307.879306</td>\n",
       "      <td>0.002454</td>\n",
       "      <td>0.988730</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2008/3/18</th>\n",
       "      <td>-316.628358</td>\n",
       "      <td>0.002939</td>\n",
       "      <td>0.991669</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2008/3/25</th>\n",
       "      <td>-332.958182</td>\n",
       "      <td>0.002968</td>\n",
       "      <td>0.994637</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2008/9/19</th>\n",
       "      <td>-555.770647</td>\n",
       "      <td>0.005363</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>500 rows × 3 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                 loss         w  cum_weight\n",
       "Date                                       \n",
       "2008/9/16  477.955543  0.005283    0.005283\n",
       "2008/1/22  345.481925  0.002429    0.007712\n",
       "2008/2/5   282.234123  0.002554    0.010266\n",
       "2008/1/4   277.055536  0.002310    0.012576\n",
       "2008/9/4   253.344578  0.005101    0.017677\n",
       "...               ...       ...         ...\n",
       "2008/9/8  -285.047818  0.005152    0.986276\n",
       "2008/1/24 -307.879306  0.002454    0.988730\n",
       "2008/3/18 -316.628358  0.002939    0.991669\n",
       "2008/3/25 -332.958182  0.002968    0.994637\n",
       "2008/9/19 -555.770647  0.005363    1.000000\n",
       "\n",
       "[500 rows x 3 columns]"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 使用加权方法改进历史模拟法\n",
    "# Age-weighted Historical Simulation (BRW)\n",
    "# w为指数平均权重\n",
    "n = 500\n",
    "w = pd.Series(np.zeros(n), index=np.arange(start = n, stop = 0, step = -1))\n",
    "lambda_hs = 0.995\n",
    "w = ((lambda_hs**(w.index-1)) * (1-lambda_hs))/(1-lambda_hs**n)\n",
    "age_weighted = pd.DataFrame({'loss': Loss, 'w': w}).sort_values(by='loss', ascending=False)\n",
    "age_weighted['cum_weight'] = age_weighted.loc[:, 'w'].cumsum()\n",
    "age_weighted"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "VaR: 282.23412300129525, ES: 411.7187339243584\n"
     ]
    }
   ],
   "source": [
    "# 指数平均加权后的99%VaR\n",
    "VaR = age_weighted.iat[np.sum(age_weighted.loc[:, 'cum_weight'] < 0.01), 0]\n",
    "ES = age_weighted.loc[age_weighted['loss']>VaR, 'loss'].mean()\n",
    "print('VaR: {0}, ES: {1}'.format(VaR, ES))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Volatility-weighted Historical Simulation (HW)\n",
    "volatility = R.copy()\n",
    "volatility.iloc[0] = R.std()\n",
    "lambda_EWMA = 0.94\n",
    "for i in np.arange(1, 500):\n",
    "    volatility.iloc[i] = np.sqrt(volatility.iloc[i-1]*volatility.iloc[i-1]*lambda_EWMA \n",
    "    + (1-lambda_EWMA)*R.iloc[i-1]*R.iloc[i-1])\n",
    "volatility_today = np.sqrt(volatility.iloc[499]*volatility.iloc[499]*lambda_EWMA \n",
    "    + (1-lambda_EWMA)*R.iloc[499]*R.iloc[499])\n",
    "HW_R = R/volatility*volatility_today"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "count     500.000000\n",
       "mean        0.634201\n",
       "std       205.546532\n",
       "min      -665.348156\n",
       "25%      -131.047342\n",
       "50%       -20.856882\n",
       "75%       122.017602\n",
       "max      1082.935250\n",
       "dtype: float64"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "HW_Profit = (HW_R * P.to_numpy()).sum(1)\n",
    "# 计算损失\n",
    "HW_Loss = -HW_Profit\n",
    "HW_Loss.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<AxesSubplot:ylabel='Frequency'>"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 观察HW法的Loss序列分布\n",
    "HW_Loss.plot.hist(bins=50, density=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>VaR</th>\n",
       "      <th>ES</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0.90</th>\n",
       "      <td>269.793393</td>\n",
       "      <td>392.166704</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0.95</th>\n",
       "      <td>354.204822</td>\n",
       "      <td>485.803111</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0.99</th>\n",
       "      <td>602.977237</td>\n",
       "      <td>786.909518</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "             VaR          ES\n",
       "0.90  269.793393  392.166704\n",
       "0.95  354.204822  485.803111\n",
       "0.99  602.977237  786.909518"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "HW_VaR = HW_Loss.quantile(q=[.9, .95, .99], interpolation='higher')\n",
    "HW_ES = pd.Series(np.zeros(3), index = HW_VaR.index)\n",
    "for i in HW_VaR.index:\n",
    "    HW_ES.at[i] = HW_Loss[HW_Loss > HW_VaR[i]].mean()\n",
    "result = pd.DataFrame({'VaR': HW_VaR, 'ES': HW_ES} )\n",
    "result"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
